From 524b25972503094cc1f6caf2b75d95fbbeda1ba7 Mon Sep 17 00:00:00 2001 From: geh <1923421292@qq.com> Date: Thu, 21 Aug 2025 11:37:06 +0800 Subject: [PATCH 1/5] 1 --- SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs | 491 ++++++++++++++++++ .../JDGL/SGManPower/ManPowerWorkChart.aspx.cs | 84 ++- .../JDGL/SGManPower/ManPowerWorkGrid.aspx | 1 + .../JDGL/SGManPower/ManPowerWorkGrid.aspx.cs | 133 ++++- .../ManPowerWorkGrid.aspx.designer.cs | 9 + .../Controllers/JDGL/SGManPowerController.cs | 31 ++ 6 files changed, 705 insertions(+), 44 deletions(-) create mode 100644 SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs create mode 100644 SGGL/WebAPI/Controllers/JDGL/SGManPowerController.cs diff --git a/SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs b/SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs new file mode 100644 index 00000000..c9b5ee1f --- /dev/null +++ b/SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs @@ -0,0 +1,491 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Model; +using System.Data; + + +namespace BLL +{ + public class SGManPowerService + { + /// + /// 检查并发送人力资源预警 + /// + public static Model.ResponeData CheckAndSendPersonWarning() + { + var responeData = new Model.ResponeData(); + // 合并两个集合 + var allItems = new List(); + var projects = Funs.DB.Base_Project.Where(p => p.ProjectState == BLL.Const.ProjectState_1).ToList(); + // foreach (var project in projects) + // { + // 检查管理人员到期未到岗情况 + var items1 = CheckManagerNotArrived("c7ade79e-7646-4c59-a8fd-020a7e3138c6"); + + // 检查作业人员人力偏差情况 + var items2 = CheckWorkerDeviation("c7ade79e-7646-4c59-a8fd-020a7e3138c6"); + + + if (items1 != null) + { + allItems.AddRange(items1); + } + + if (items2 != null) + { + allItems.AddRange(items2); + } + + // } + responeData.data = allItems; + responeData.message = "人员预警"; + return responeData; + } + + + /// + /// 检查管理人员到期未到岗情况(超过一周发出预警) + /// + /// 项目ID + private static IEnumerable CheckManagerNotArrived(string projectId) + { + //获取计划的最新版本 + var version = "1"; + var sgMan = Funs.DB.JDGL_SGManPower.Where(x => x.ProjectId == projectId).OrderByDescending(x => x.Version) + .FirstOrDefault(); + if (sgMan != null) + { + version = sgMan.Version; + } + + // 先获取计划表超过一周的管理岗位有哪些 + var dataList = (from x in Funs.DB.JDGL_SGManPower + join p in Funs.DB.Base_WorkPost on x.WorkPostId equals p.WorkPostId into pp + from y in pp.DefaultIfEmpty() + where x.ProjectId == projectId && (y.PostType == "4" || y.PostType == "1") && + x.PlanDate <= DateTime.Now.AddDays(-7) && x.Version == version + select x).ToList(); + + var lItems = new List(); + //循环检查实际考勤中的人数 + foreach (var data in dataList) + { + //根据人员计划表获取计划中的管理人员数 + int num = getInOutRecordNum(data); + if (data.Quantity > num) + { + lItems = SendManagerWarning(data.UnitId, projectId, data.UnitWorkId, data.PlanDate, data.Quantity, num); + } + } + + return lItems; + } + + //获取实际考勤人员数 + private static int getInOutRecordNum(JDGL_SGManPower sgManPower) + { + string strSql = @" + SELECT e.UnitId, e.PostId, e.RecordDate, p.WorkAreaId as UnitWorkId + FROM T_d_EmployInOutRecord e INNER JOIN SitePerson_Person p ON e.IDCardNo = p.IdentityCard AND e.ProjectId = p.ProjectId + WHERE e.PostId IS NOT NULL AND e.PostId != '' + AND e.ProjectId = @ProjectId + AND e.RecordDate = @RecordDate + AND e.UnitId = @UnitId + AND e.PostId = @PostId"; + + var parameters = new List + { + new System.Data.SqlClient.SqlParameter("@ProjectId", sgManPower.ProjectId), + new System.Data.SqlClient.SqlParameter("@RecordDate", sgManPower.PlanDate), + new System.Data.SqlClient.SqlParameter("@UnitId", sgManPower.UnitId), + new System.Data.SqlClient.SqlParameter("@PostId", sgManPower.WorkPostId), + }; + + // 执行查询获取分组数据 + var dt = SQLHelper.GetDataTableRunText(strSql, parameters.ToArray()); + + // 创建一个新的DataTable来存储处理后的数据 + DataTable processedDt = dt.Clone(); + + foreach (System.Data.DataRow row in dt.Rows) + { + string ids = row["UnitWorkId"] != DBNull.Value ? row["UnitWorkId"].ToString() : string.Empty; + if (!string.IsNullOrEmpty(ids)) + { + string[] unitWorkIdArray = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string unitWorkId in unitWorkIdArray) + { + // 往processedDt里面添加数据,每个UnitWorkId一行 + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = unitWorkId.Trim(); + processedDt.Rows.Add(newRow); + } + } + else + { + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = string.Empty; + processedDt.Rows.Add(newRow); + } + } + + // 确定要用于后续处理的数据源 + IEnumerable dataSource = processedDt.AsEnumerable(); + + if (string.IsNullOrEmpty(sgManPower.UnitWorkId)) + { + dataSource = dataSource.Where(x => x["UnitWorkId"] == null); + } + else + { + dataSource = dataSource.Where(x => x["UnitWorkId"] != DBNull.Value && x["UnitWorkId"].ToString() == sgManPower.UnitWorkId); + } + + return dataSource.Count(); + } + + /// + /// 发送管理人员预警 + /// + /// 项目ID + /// 单位id + private static List SendManagerWarning(string unitId, string projectId, string unitWorkId, DateTime? planDate, int? quantity, int num) + { + // 发送预警信息 + var toDoItems = new List(); + + var unitWorks = (from x in Funs.DB.WBS_UnitWork + where x.UnitWorkId == unitWorkId + select new { x.UnitWorkId, x.UnitWorkName }).FirstOrDefault(); + + var projectUnits = (from x in Funs.DB.Project_ProjectUnit + join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId + where x.UnitId == unitId + select new { x.UnitId, y.UnitName, x.UnitType }).FirstOrDefault(); + if (projectUnits != null) + { + List toUserIds = new List(); + + // 施工单位人员推送至施工单位项目经理和总包单位施工经理 + if (projectUnits.UnitType == Const.ProjectUnitType_2) // 施工分包单位 + { + // 获取施工单位项目经理 + var constructionManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ProjectManager) + select x).ToList(); + + if (constructionManagers.Count > 0) + { + foreach (var projectUser in constructionManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + + // 获取总包单位施工经理 + var generalContractorUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(pu => + pu.ProjectId == projectId && pu.UnitType == Const.ProjectUnitType_1); // 总包单位 + + if (generalContractorUnit != null) + { + var constructionManagerGCs = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == generalContractorUnit.UnitId && + x.IsPost == true && x.RoleId.Contains(Const.ConstructionManager) + select x).ToList(); + if (constructionManagerGCs.Count > 0) + { + foreach (var projectUser in constructionManagerGCs) + { + toUserIds.Add(projectUser.UserId); + } + } + } + } + // 总包单位人员推送到总包单位施工经理和项目经理 + else if (projectUnits.UnitType == Const.ProjectUnitType_1) // 总包单位 + { + // 获取总包单位施工经理 + var constructionManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ConstructionManager) + select x).ToList(); + if (constructionManagers.Count() > 0) + { + foreach (var projectUser in constructionManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + + // 获取总包单位项目经理 + var projectManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ProjectManager) + select x).ToList(); + if (projectManagers.Count() > 0) + { + foreach (var projectUser in projectManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + } + + string warningContent = string.Empty; + if (unitWorks != null) + { + warningContent = $"{projectUnits.UnitName}单位{unitWorks.UnitWorkName}装置计划{planDate}投入人力{quantity}人,实际考勤为{num}人。"; + } + else + { + warningContent = $"{projectUnits.UnitName}单位计划{planDate}投入人力{quantity}人,实际考勤为{num}人。"; + } + + foreach (var userId in toUserIds) + { + Model.ToDoItem toDoItem = new Model.ToDoItem(); + toDoItem.DataId = SQLHelper.GetNewID(typeof(Model.ToDoItem)); + toDoItem.MenuId = ""; + toDoItem.MenuName = "管理人员到岗预警"; + toDoItem.Content = warningContent; + toDoItem.UserId = userId; + toDoItem.UserName = UserService.GetUserNameByUserId(userId); + toDoItem.DataTime = DateTime.Now; + toDoItem.DataTimeStr = DateTime.Now.ToString("yyyy-MM-dd"); + toDoItem.PCUrl = ""; + toDoItem.UrlStr = "pages/exam/examjs"; + toDoItems.Add(toDoItem); + } + } + + return toDoItems; + } + + // /// + // /// 检查作业人员人力偏差情况(一周内累计偏差值超过计划的10%) + // /// + // /// 项目ID + private static IEnumerable CheckWorkerDeviation(string projectId) + { + //获取计划的最新版本 + var version = "1"; + var sgMan = Funs.DB.JDGL_SGManPower.Where(x => x.ProjectId == projectId).OrderByDescending(x => x.Version) + .FirstOrDefault(); + if (sgMan != null) + { + version = sgMan.Version; + } + + // 先获取计划表一周的作业岗位有哪些 + var dataList = (from x in Funs.DB.JDGL_SGManPower + join p in Funs.DB.Base_WorkPost on x.WorkPostId equals p.WorkPostId into pp + from y in pp.DefaultIfEmpty() + where x.ProjectId == projectId && (y.PostType == "2" || y.PostType == "3") && + x.PlanDate >= DateTime.Now.AddDays(-7) && x.PlanDate <= DateTime.Now && x.Version == version + group x by new + { + x.UnitId, + x.UnitWorkId, + x.WorkPostId + } + into g + select new + { + UnitId = g.Key.UnitId, + UnitWorkId = g.Key.UnitWorkId, + WorkPostId = g.Key.WorkPostId, + QuantitySum = g.Sum(x => x.Quantity) + }).ToList(); + + var lItems = new List(); + //循环检查实际考勤中的人数 + foreach (var data in dataList) + { + //根据人员计划表获取计划中的作业人员数 + int num = getInOutRecordNum1(data.UnitId, data.UnitWorkId, data.WorkPostId,projectId); + + // 计算偏差百分比 + if (data.QuantitySum > num) + { + double deviationPercentage = Math.Abs((double)((data.QuantitySum - num) / data.QuantitySum)); + // 如果偏差超过10%,发出预警 + if (deviationPercentage > 0.1) + { + lItems = SendWorkerDeviationWarning(data.UnitId, projectId, data.UnitWorkId, data.QuantitySum, 0); + } + } + } + + return lItems; + + } + + + //获取实际考勤人员数 + private static int getInOutRecordNum1(string unitId, string unitWorkId, string workPostId, string projectId) + { + string strSql = @" + SELECT e.UnitId, e.PostId, e.RecordDate, p.WorkAreaId as UnitWorkId + FROM T_d_EmployInOutRecord e INNER JOIN SitePerson_Person p ON e.IDCardNo = p.IdentityCard AND e.ProjectId = p.ProjectId + WHERE e.PostId IS NOT NULL AND e.PostId != '' + AND e.ProjectId = @ProjectId + AND e.UnitId = @UnitId + AND e.PostId = @PostId + AND e.RecordDate >= @StartDate + AND e.RecordDate <= @EndDate"; + + var parameters = new List + { + new System.Data.SqlClient.SqlParameter("@ProjectId", projectId), + new System.Data.SqlClient.SqlParameter("@UnitId", unitId), + new System.Data.SqlClient.SqlParameter("@PostId", workPostId), + new System.Data.SqlClient.SqlParameter("@StartDate", DateTime.Now.AddDays(-7)), + new System.Data.SqlClient.SqlParameter("@EndDate", DateTime.Now), + }; + + // 执行查询获取分组数据 + var dt = SQLHelper.GetDataTableRunText(strSql, parameters.ToArray()); + + // 创建一个新的DataTable来存储处理后的数据 + DataTable processedDt = dt.Clone(); + + foreach (System.Data.DataRow row in dt.Rows) + { + string ids = row["UnitWorkId"] != DBNull.Value ? row["UnitWorkId"].ToString() : string.Empty; + if (!string.IsNullOrEmpty(ids)) + { + string[] unitWorkIdArray = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string id in unitWorkIdArray) + { + // 往processedDt里面添加数据,每个UnitWorkId一行 + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = id.Trim(); + processedDt.Rows.Add(newRow); + } + } + else + { + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = string.Empty; + processedDt.Rows.Add(newRow); + } + } + + // 确定要用于后续处理的数据源 + IEnumerable dataSource = processedDt.AsEnumerable(); + + if (string.IsNullOrEmpty(unitWorkId)) + { + dataSource = dataSource.Where(x => x["UnitWorkId"] == null); + } + else + { + dataSource = dataSource.Where(x => x["UnitWorkId"] != DBNull.Value && x["UnitWorkId"].ToString() == unitWorkId); + } + + return dataSource.Count(); + } + + + /// + /// 发送作业人员偏差预警 + /// + /// 项目ID + /// 单位ID + /// 计划总人数 + /// 实际总人数 + /// 偏差百分比 + private static List SendWorkerDeviationWarning(string unitId, string projectId, string unitWorkId, int? quantity, int num) + { + + // 发送预警信息 + var toDoItems = new List(); + List toUserIds = new List(); + + var unitWorks = (from x in Funs.DB.WBS_UnitWork + where x.UnitWorkId == unitWorkId + select new { x.UnitWorkId, x.UnitWorkName }).FirstOrDefault(); + + var projectUnits = (from x in Funs.DB.Project_ProjectUnit + join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId + where x.UnitId == unitId + select new { x.UnitId, y.UnitName, x.UnitType }).FirstOrDefault(); + + // 获取施工单位项目经理 + var constructionManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ProjectManager) + select x).ToList(); + + if (constructionManagers.Count > 0) + { + foreach (var projectUser in constructionManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + // 获取总包单位施工经理 + var generalContractorUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(pu => + pu.ProjectId == projectId && pu.UnitType == Const.ProjectUnitType_1); // 总包单位 + + if (generalContractorUnit != null) + { + var constructionManagerGCs = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == generalContractorUnit.UnitId && + x.IsPost == true && x.RoleId.Contains(Const.ConstructionManager) + select x).ToList(); + if (constructionManagerGCs.Count > 0) + { + foreach (var projectUser in constructionManagerGCs) + { + toUserIds.Add(projectUser.UserId); + } + } + } + + // 构建预警信息内容 + string warningContent = string.Empty; + if (unitWorks != null) + { + warningContent = + $"{projectUnits.UnitName}单位{unitWorks.UnitWorkName}装置计划投入人力{quantity}人,实际考勤为{num}人。"; + } + else + { + warningContent = $"{projectUnits.UnitName}单位计划投入人力{quantity}人,实际考勤为{num}人。"; + } + + // 发送预警信息 + foreach (var userId in toUserIds) + { + Model.ToDoItem toDoItem = new Model.ToDoItem(); + toDoItem.DataId = SQLHelper.GetNewID(typeof(Model.ToDoItem)); + toDoItem.MenuId = ""; + toDoItem.MenuName = "人力资源偏差预警"; + toDoItem.Content = warningContent; + toDoItem.UserId = userId; + toDoItem.UserName = UserService.GetUserNameByUserId(userId); + toDoItem.DataTime = DateTime.Now; + toDoItem.DataTimeStr = DateTime.Now.ToString("yyyy-MM-dd"); + toDoItem.PCUrl = ""; + toDoItem.UrlStr = "pages/exam/examjs"; + toDoItems.Add(toDoItem); + } + return toDoItems; + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.cs index 5af304f4..810b4f5d 100644 --- a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.cs +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.cs @@ -30,6 +30,7 @@ namespace FineUIPro.Web.JDGL.SGManPower string startTime = Request.Params["StartTime"]; string endTime = Request.Params["EndTime"]; string workPostId = Request.Params["WorkPostId"]; + string unitWorkId = Request.Params["UnitWorkId"]; // 检查必要参数 if (string.IsNullOrEmpty(startTime) || string.IsNullOrEmpty(endTime)) @@ -43,13 +44,12 @@ namespace FineUIPro.Web.JDGL.SGManPower // 使用原生SQL查询直接在数据库中进行聚合计算,提高性能 string strSql = @" - SELECT - RecordDate, - COUNT(1) as TotalCount - FROM T_d_EmployInOutRecord - WHERE ProjectId = @ProjectId - AND RecordDate >= @StartDate - AND RecordDate <= @EndDate"; + SELECT e.UnitId, e.PostId, e.RecordDate, p.WorkAreaId as UnitWorkId + FROM T_d_EmployInOutRecord e INNER JOIN SitePerson_Person p ON e.IDCardNo = p.IdentityCard AND e.ProjectId = p.ProjectId + WHERE e.PostId IS NOT NULL AND e.PostId != '' + AND e.ProjectId = @ProjectId + AND e.RecordDate >= @StartDate + AND e.RecordDate <= @EndDate"; var parameters = new List { @@ -61,32 +61,79 @@ namespace FineUIPro.Web.JDGL.SGManPower // 添加单位筛选条件 if (!string.IsNullOrEmpty(unitId) && unitId != Const._Null) { - strSql += " AND UnitId = @UnitId"; + strSql += " AND e.UnitId = @UnitId"; parameters.Add(new SqlParameter("@UnitId", unitId)); } // 添加岗位筛选条件 if (!string.IsNullOrEmpty(workPostId) && workPostId != Const._Null) { - strSql += " AND PostId = @WorkPostId"; + strSql += " AND e.PostId = @WorkPostId"; parameters.Add(new SqlParameter("@WorkPostId", workPostId)); } - // 按日期分组并排序 - strSql += " GROUP BY RecordDate ORDER BY RecordDate"; - // 执行查询 var dt = SQLHelper.GetDataTableRunText(strSql, parameters.ToArray()); + + // 创建一个新的DataTable来存储处理后的数据 + DataTable processedDt = dt.Clone(); + foreach (System.Data.DataRow row in dt.Rows) + { + string ids = row["UnitWorkId"] != DBNull.Value ? row["UnitWorkId"].ToString() : string.Empty; + if (!string.IsNullOrEmpty(ids)) + { + string[] unitWorkIdArray = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string id in unitWorkIdArray) + { + // 往processedDt里面添加数据,每个UnitWorkId一行 + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = id.Trim(); + processedDt.Rows.Add(newRow); + } + } + else + { + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = string.Empty; + processedDt.Rows.Add(newRow); + } + } + + // 确定要用于后续处理的数据源 + IEnumerable dataSource = processedDt.AsEnumerable(); + + // 如果选择了特定的装置进行筛选 + if (!string.IsNullOrEmpty(unitWorkId) && unitWorkId != Const._Null) + { + dataSource = dataSource.Where(x => x["UnitWorkId"] != DBNull.Value && x["UnitWorkId"].ToString() == unitWorkId); + } + + //针对dt中的数据进行分组 + var data = dataSource + .GroupBy(row => new { + RecordDate = row["RecordDate"] + }).Select(group => new + { + RecordDate = group.Key.RecordDate, + RecordCount = group.Count() + }).ToList(); + // 如果没有数据,显示提示信息 - if (dt.Rows.Count == 0) + if (data.Count == 0) { ShowNotify("在指定时间范围内没有找到人力统计数据", MessageBoxIcon.Warning); return; } // 根据数据点数量动态调整图表宽度,确保每个数据点有足够的显示空间 - int chartWidth = Math.Max(1000, dt.Rows.Count * 50); // 每个数据点至少50像素宽,最小1000像素 + int chartWidth = Math.Max(1000, data.Count * 50); // 每个数据点至少50像素宽,最小1000像素 // 创建图表数据对象 Model.DataSourceChart dataSourceChart = new Model.DataSourceChart @@ -106,17 +153,16 @@ namespace FineUIPro.Web.JDGL.SGManPower }; // 添加数据点 - foreach (DataRow row in dt.Rows) + foreach (var item in data) { - if (row["RecordDate"] != DBNull.Value) + if (item.RecordDate != null) { - DateTime recordDate = Convert.ToDateTime(row["RecordDate"]); - int totalCount = Convert.ToInt32(row["TotalCount"]); + DateTime recordDate = Convert.ToDateTime(item.RecordDate); Model.DataSourcePoint point = new Model.DataSourcePoint { PointText = recordDate.ToString("MM-dd"), - PointValue = totalCount.ToString() + PointValue = item.RecordCount.ToString() }; dataSourceTeam.DataSourcePoints.Add(point); } diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx index c3f47eee..aa3b99f4 100644 --- a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx @@ -46,6 +46,7 @@ + = @StartDate - AND RecordDate <= @EndDate"; + string strSql = @" + SELECT e.UnitId, e.PostId, e.RecordDate, p.WorkAreaId as UnitWorkId + FROM T_d_EmployInOutRecord e INNER JOIN SitePerson_Person p ON e.IDCardNo = p.IdentityCard AND e.ProjectId = p.ProjectId + WHERE e.PostId IS NOT NULL AND e.PostId != '' + AND e.ProjectId = @ProjectId + AND e.RecordDate >= @StartDate + AND e.RecordDate <= @EndDate"; var parameters = new List { @@ -196,36 +201,88 @@ namespace FineUIPro.Web.JDGL.SGManPower if (UnitId != Const._Null) { - strSql += " AND UnitId = @UnitId"; + strSql += " AND e.UnitId = @UnitId"; parameters.Add(new System.Data.SqlClient.SqlParameter("@UnitId", UnitId)); } if (drpWorkPost.SelectedValue != Const._Null) { - strSql += " AND PostId = @PostId"; + strSql += " AND e.PostId = @PostId"; parameters.Add(new System.Data.SqlClient.SqlParameter("@PostId", drpWorkPost.SelectedValue)); } - strSql += " GROUP BY UnitId, PostId, RecordDate"; - // 执行查询获取分组数据 var dt = SQLHelper.GetDataTableRunText(strSql, parameters.ToArray()); + // 创建一个新的DataTable来存储处理后的数据 + DataTable processedDt = dt.Clone(); + + foreach (System.Data.DataRow row in dt.Rows) + { + string ids = row["UnitWorkId"] != DBNull.Value ? row["UnitWorkId"].ToString() : string.Empty; + if (!string.IsNullOrEmpty(ids)) + { + string[] unitWorkIdArray = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string unitWorkId in unitWorkIdArray) + { + // 往processedDt里面添加数据,每个UnitWorkId一行 + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = unitWorkId.Trim(); + processedDt.Rows.Add(newRow); + } + } + else + { + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = string.Empty; + processedDt.Rows.Add(newRow); + } + } + + //针对dt中的数据进行分组 + var data = processedDt.AsEnumerable() + .GroupBy(row => new { + UnitId = row["UnitId"], + PostId = row["PostId"], + UnitWorkId = row["UnitWorkId"], + RecordDate = row["RecordDate"] + }).Select(group => new + { + UnitId = group.Key.UnitId, + PostId = group.Key.PostId, + UnitWorkId = group.Key.UnitWorkId, + RecordDate = group.Key.RecordDate, + RecordCount = group.Count() + }).ToList(); + + var data1 = data; + // 如果选择了特定的装置进行筛选 + if (drpUnitWork.SelectedValue != Const._Null) + { + data1 = data.Where(x => x.UnitWorkId.ToString() == drpUnitWork.SelectedValue).ToList(); + } + // 将数据转换为更易处理的格式 var groupedData = new List(); var groupedDict = new Dictionary(); - - foreach (System.Data.DataRow row in dt.Rows) + foreach (var item in data1) { - string key = $"{row["UnitId"]}_{row["PostId"]}"; - DateTime recordDate = Convert.ToDateTime(row["RecordDate"]); - int count = Convert.ToInt32(row["RecordCount"]); + string key = $"{item.UnitId}_{item.PostId}_{item.UnitWorkId}"; + DateTime recordDate = Convert.ToDateTime(item.RecordDate); + int count = Convert.ToInt32(item.RecordCount); if (!groupedDict.ContainsKey(key)) { dynamic group = new System.Dynamic.ExpandoObject(); - group.UnitId = row["UnitId"]; - group.PostId = row["PostId"]; + group.UnitId = item.UnitId; + group.PostId = item.PostId; + group.UnitWorkId = item.UnitWorkId; group.DailyCounts = new Dictionary(); group.TotalCount = 0; groupedDict[key] = group; @@ -244,9 +301,11 @@ namespace FineUIPro.Web.JDGL.SGManPower // 只获取当前页需要的单位和岗位信息,避免加载全部数据 var unitIds = pagedData.Where(x => x.UnitId != null).Select(x => x.UnitId.ToString()).Distinct().ToList(); var postIds = pagedData.Where(x => x.PostId != null).Select(x => x.PostId.ToString()).Distinct().ToList(); + var unitWorkIds = pagedData.Where(x => x.UnitWorkId != null).Select(x => x.UnitWorkId.ToString()).Distinct().ToList(); var units = new Dictionary(); var workPosts = new Dictionary(); + var unitWorks = new Dictionary(); if (unitIds.Any()) { @@ -269,6 +328,16 @@ namespace FineUIPro.Web.JDGL.SGManPower workPosts[p.WorkPostId] = p.WorkPostName; } } + if (unitWorkIds.Any()) + { + var unitWorkQuery = from p in Funs.DB.WBS_UnitWork + where unitWorkIds.Contains(p.UnitWorkId) + select new { p.UnitWorkId, p.UnitWorkName }; + foreach (var p in unitWorkQuery) + { + unitWorks[p.UnitWorkId] = p.UnitWorkName; + } + } foreach (var group in pagedData) { @@ -287,6 +356,15 @@ namespace FineUIPro.Web.JDGL.SGManPower row["UnitName"] = unitName; row["UnitId"] = group.UnitId ?? (object)DBNull.Value; + // 装置信息 + string unitWorkName = ""; + if (group.UnitWorkId != null && unitWorks.ContainsKey(group.UnitWorkId.ToString())) + { + unitWorkName = unitWorks[group.UnitWorkId.ToString()]; + } + row["UnitWorkName"] = unitWorkName; + row["UnitWorkId"] = group.UnitWorkId ?? (object)DBNull.Value; + // 岗位信息 string workPostName = ""; if (group.PostId != null && workPosts.ContainsKey(group.PostId.ToString())) @@ -450,9 +528,14 @@ namespace FineUIPro.Web.JDGL.SGManPower { urlParams += "&WorkPostId=" + drpWorkPost.SelectedValue; } + // 添加装置参数(如果已选择) + if (drpUnitWork.SelectedValue != Const._Null && !string.IsNullOrEmpty(drpUnitWork.SelectedValue)) + { + urlParams += "&UnitWorkId=" + drpUnitWork.SelectedValue; + } PageContext.RegisterStartupScript( - Window2.GetShowReference(string.Format("ManPowerWorkChart.aspx?{0}", urlParams), "人力计划图表")); + Window2.GetShowReference(string.Format("ManPowerWorkChart.aspx?{0}", urlParams), "人力考勤图表")); } else { diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs index ef9efffd..11ed5899 100644 --- a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs @@ -68,6 +68,15 @@ namespace FineUIPro.Web.JDGL.SGManPower /// protected global::FineUIPro.Toolbar Toolbar4; + /// + /// drpUnitWork 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpUnitWork; + /// /// drpWorkPost 控件。 /// diff --git a/SGGL/WebAPI/Controllers/JDGL/SGManPowerController.cs b/SGGL/WebAPI/Controllers/JDGL/SGManPowerController.cs new file mode 100644 index 00000000..bdbbb4b2 --- /dev/null +++ b/SGGL/WebAPI/Controllers/JDGL/SGManPowerController.cs @@ -0,0 +1,31 @@ +using System; +using System.Web.Http; +using BLL; + +namespace WebAPI.Controllers.JDGL +{ + public class SGManPowerController : ApiController + { + + /// + /// 人力预警 + /// + /// + [HttpPost] + public Model.ResponeData ManPowerWarning() + { + var responeData = new Model.ResponeData(); + try + { + responeData = SGManPowerService.CheckAndSendPersonWarning(); + } + catch (Exception ex) + { + responeData.code = 0; + responeData.message = ex.ToString(); + } + return responeData; + } + + } +} \ No newline at end of file From 5fabc334768bfb6b73c9d1dd9aaeff5c13118b66 Mon Sep 17 00:00:00 2001 From: geh <1923421292@qq.com> Date: Thu, 21 Aug 2025 11:37:37 +0800 Subject: [PATCH 2/5] 1 --- SGGL/BLL/BLL.csproj | 1 + 1 file changed, 1 insertion(+) diff --git a/SGGL/BLL/BLL.csproj b/SGGL/BLL/BLL.csproj index f2c35878..de1372da 100644 --- a/SGGL/BLL/BLL.csproj +++ b/SGGL/BLL/BLL.csproj @@ -610,6 +610,7 @@ + From d8ca6432a27da80402f04f52d0b989628a0b2117 Mon Sep 17 00:00:00 2001 From: geh <1923421292@qq.com> Date: Thu, 21 Aug 2025 17:43:07 +0800 Subject: [PATCH 3/5] =?UTF-8?q?=E8=B4=A8=E9=87=8F=E6=95=B0=E6=8D=AE?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...QHSE_V2025-08-18-geh(EPC项目现场质量数据).sql | 26 + SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 40 ++ .../ZHGL/CQMSData/CQMSBasicData.aspx | 168 +++++ .../ZHGL/CQMSData/CQMSBasicData.aspx.cs | 521 ++++++++++++++ .../CQMSData/CQMSBasicData.aspx.designer.cs | 125 ++++ .../ZHGL/CQMSData/CQMSCheckData.aspx | 156 +++++ .../ZHGL/CQMSData/CQMSCheckData.aspx.cs | 477 +++++++++++++ .../CQMSData/CQMSCheckData.aspx.designer.cs | 125 ++++ .../CQMSData/CQMSEquipAndMachineData.aspx | 134 ++++ .../CQMSData/CQMSEquipAndMachineData.aspx.cs | 438 ++++++++++++ .../CQMSEquipAndMachineData.aspx.designer.cs | 125 ++++ .../ZHGL/CQMSData/CQMSNoticeDetailsData.aspx | 262 +++++++ .../CQMSData/CQMSNoticeDetailsData.aspx.cs | 663 ++++++++++++++++++ .../CQMSNoticeDetailsData.aspx.designer.cs | 125 ++++ .../ZHGL/CQMSData/WeldingData.aspx | 154 ++++ .../ZHGL/CQMSData/WeldingData.aspx.cs | 424 +++++++++++ .../CQMSData/WeldingData.aspx.designer.cs | 125 ++++ SGGL/WebAPI/WebAPI.csproj | 1 + 18 files changed, 4089 insertions(+) create mode 100644 DataBase/版本日志/SUBQHSE_V2025-08-18-geh(EPC项目现场质量数据).sql create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs create mode 100644 SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.designer.cs diff --git a/DataBase/版本日志/SUBQHSE_V2025-08-18-geh(EPC项目现场质量数据).sql b/DataBase/版本日志/SUBQHSE_V2025-08-18-geh(EPC项目现场质量数据).sql new file mode 100644 index 00000000..ac8b73c3 --- /dev/null +++ b/DataBase/版本日志/SUBQHSE_V2025-08-18-geh(EPC项目现场质量数据).sql @@ -0,0 +1,26 @@ +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'现场质量数据', NULL, N'', 170, N'0', N'Menu_ZHGL', '0', '0', '1'); + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'51EA8258-C81D-4C33-B939-769450979D14', N'质量基本信息', NULL, N'ZHGL/CQMSData/CQMSBasicData.aspx', 10, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'6E1F4EF5-47CA-4DF8-B561-3C98DBD88EA2', N'焊接管理', NULL, N'ZHGL/CQMSData/WeldingData.aspx', 20, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'C9076E93-29DB-419C-8902-789163C6554A', N'现场质量检查', NULL, N'ZHGL/CQMSData/CQMSCheckData.aspx', 30, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'64FED633-2436-426B-A230-7C0038E44AD4', N'设备材料计量器具质量文件上报', NULL, N'ZHGL/CQMSData/CQMSEquipAndMachineData.aspx', 40, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'12E7E1FD-6D8D-41D8-801C-E15B68805213', N'共检点明细', NULL, N'ZHGL/CQMSData/CQMSNoticeDetailsData.aspx', 50, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + +go \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index 337b812d..6b79b476 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -2205,6 +2205,11 @@ + + + + + @@ -18776,6 +18781,41 @@ ZHDD.aspx + + CQMSBasicData.aspx + ASPXCodeBehind + + + CQMSBasicData.aspx + + + CQMSCheckData.aspx + ASPXCodeBehind + + + CQMSCheckData.aspx + + + CQMSEquipAndMachineData.aspx + ASPXCodeBehind + + + CQMSEquipAndMachineData.aspx + + + CQMSNoticeDetailsData.aspx + ASPXCodeBehind + + + CQMSNoticeDetailsData.aspx + + + WeldingData.aspx + ASPXCodeBehind + + + WeldingData.aspx + AccidentCauseReportBar.aspx ASPXCodeBehind diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx new file mode 100644 index 00000000..f4f15ea6 --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx @@ -0,0 +1,168 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSBasicData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSBasicData" %> + + + + + + + 质量基本信息 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.cs new file mode 100644 index 00000000..b5f6d22e --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.cs @@ -0,0 +1,521 @@ +using BLL; +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + public partial class CQMSBasicData : PageBase + { + + //使用DateTime.Now获取当前日期,然后获取该月第一天 + DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + + public Model.SGGLDB db = Funs.DB; + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); + // 绑定表格 + this.BindGrid(); + } + } + + #region 绑定数据 + + /// + /// 绑定数据 + /// + private void BindGrid() + { + var list = BaseDataService.GetBeUnderConstruction(); + + if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim())) + { + list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList(); + } + + var result = new List(); + foreach (var project in list) + { + int value1 = 0; // 五环专业工程师 + int value2 = 0; // 分包商专业工程师 + int value3 = 0; + int value4 = 0; + int value5 = 0; + int value6 = 0; + int value7 = 0; + int value8 = 0; + int value9 = 0; + int value10 = 0; + int value11 = 0; + int value12 = 0; + int value13 = 0; + int value14 = 0; + int value15 = 0; + int value16 = 0; + int value17 = 0; + int value18 = 0; + + + //根据项目获取总包单位 + var generalContractorUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(pu => + pu.ProjectId == project.ProjectId && pu.UnitType == Const.ProjectUnitType_1); // 总包单位 + + if (generalContractorUnit != null) + { + var constructionManagerGCs = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == project.ProjectId && x.UnitId == generalContractorUnit.UnitId && + x.IsPost == true && x.RoleId.Contains(Const.ZBCNEngineer) //专业工程师 + select x).ToList(); + //五环专业工程师 + value1 = constructionManagerGCs.Count; + } + + // 获取分包单位的专业工程师 + var subContractorUnits = (from x in Funs.DB.Project_ProjectUnit + where x.ProjectId == project.ProjectId && x.UnitType == Const.ProjectUnitType_2 //分包单位 + select x).ToList(); + + foreach (var unit in subContractorUnits) + { + var subContractorUsers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == project.ProjectId && x.UnitId == unit.UnitId && + x.IsPost == true && x.RoleId.Contains(Const.ZBCNEngineer) //分包商专业工程师 + select x).ToList(); + + value2 += subContractorUsers.Count; + } + + #region 一般施工方案审批 + + var query1 = (from c in db.Comprehensive_GeneralPlanApproval + where c.ProjectId == project.ProjectId + select new + { + c.ApprovalDate, + c.ProjectId, + c.CompileDate + }).ToList(); + value3 = query1.Where(x => x.ApprovalDate >= firstDayOfMonth).Count(); + value4 = query1.Count(); + + #endregion + + #region 危大工程方案审批 + + var query2 = (from c in db.Comprehensive_MajorPlanApproval + where c.ProjectId == project.ProjectId + select new + { + c.ApprovalDate, + c.ProjectId, + c.ExpertReviewMan, + c.IsReview, + c.CompileDate + }).ToList(); + value5 = query2.Where(x => x.ApprovalDate >= firstDayOfMonth).Count(); + value6 = query2.Count(); + + #endregion + + #region ITP发布情况 + + var query3 = (from c in db.Inspection_Test_Plan + where c.ProjectId == project.ProjectId + select new + { + c.ApprovalDate, + c.ProjectId, + c.CreateDate + }).ToList(); + value7 = query3.Where(x => x.CreateDate >= firstDayOfMonth).Count(); + value8 = query3.Count(); + + #endregion + + #region 设计交底(次) + + var query4 = (from c in db.Comprehensive_DesignDetails + where c.ProjectId == project.ProjectId + select new + { + c.Status, + c.CompileDate, + c.ProjectId, + }).ToList(); + value9 = query4.Where(x => x.CompileDate >= firstDayOfMonth).Count(); + value10 = query4.Count(); + + #endregion + + #region 图纸会审(次) + + var query5 = (from c in db.Comprehensive_ReviewDrawings + where c.ProjectId == project.ProjectId + select new + { + c.Status, + c.ReviewDate, + c.ProjectId, + }).ToList(); + value11 = query5.Where(x => x.ReviewDate >= firstDayOfMonth).Count(); + value12 = query5.Count(); + + #endregion + + #region 设计变更管理 + + var query6 = (from c in db.Comprehensive_ReviewDrawings + where c.ProjectId == project.ProjectId + select new + { + c.Status, + c.ReviewDate, + c.ProjectId, + }).ToList(); + value13 = query6.Where(x => x.ReviewDate >= firstDayOfMonth).Count(); + value14 = query6.Count(); + + #endregion + + #region 现场质量培训 + + var query7 = (from x in Funs.DB.Comprehensive_InspectionPerson + join p in Funs.DB.Base_Project on x.ProjectId equals p.ProjectId into pGroup + from p in pGroup.DefaultIfEmpty() + join u in Funs.DB.Base_Unit on x.UnitId equals u.UnitId into uGroup + from u in uGroup.DefaultIfEmpty() + join y in Funs.DB.SitePerson_Person on x.InspectionPersonId equals y.PersonId into yGroup + from y in yGroup.DefaultIfEmpty() + join m in Funs.DB.Base_WorkPost on y.WorkPostId equals m.WorkPostId into mGroup + from m in mGroup.DefaultIfEmpty() + where p.ProjectId == project.ProjectId && x.IsTrain == true + select new + { + x.ProjectId, + p.ProjectName, + u.UnitId, + u.UnitName, + Name = x.PersonName, + Sex = y.Sex == null ? "" : (y.Sex == "1" ? "男" : "女"), + y.IdentityCard, + WorkPostName = m.WorkPostName == null ? "" : m.WorkPostName, + Phone = y.Telephone, + x.CompileDate + }).ToList(); + + value17 = query7.Where(x => x.CompileDate >= firstDayOfMonth).Count(); + value18 = query7.Count(); + + #endregion + + + // 构造动态对象用于绑定到Grid + result.Add(new + { + project.ProjectId, + project.ProjectName, + project.ShortName, + Value1 = value1, + Value2 = value2, + Value3 = value3, // 一般施工方案审批本月 + Value4 = value4, // 一般施工方案审批累计 + Value5 = value5, // 危大工程审批情况本月 + Value6 = value6, // 危大工程审批情况累计 + Value7 = value7, // ITP发布情况本月 + Value8 = value8, // ITP发布情况累计 + Value9 = value9, // 设计交底本月 + Value10 = value10, // 设计交底累计 + Value11 = value11, // 图纸会审本月 + Value12 = value12, // 图纸会审累计 + Value13 = value13, // 设计变更管理本月 + Value14 = value14, // 设计变更管理累计 + Value15 = value15, // 现场质量培训本月培训次数 + Value16 = value16, // 现场质量培训累计培训次数 + Value17 = value17, // 现场质量培训本月培训人数 + Value18 = value18 // 现场质量培训累计培训人数 + }); + } + + var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList(); + Grid1.RecordCount = result.Count; + Grid1.DataSource = pagedResult; + Grid1.DataBind(); + + + JObject summary = new JObject(); + summary.Add("ProjectName", "合计"); + summary.Add("Value1", pagedResult.Sum(p => p.Value1)); + summary.Add("Value2", pagedResult.Sum(p => p.Value2)); + summary.Add("Value3", pagedResult.Sum(p => p.Value3)); + summary.Add("Value4", pagedResult.Sum(p => p.Value4)); + summary.Add("Value5", pagedResult.Sum(p => p.Value5)); + summary.Add("Value6", pagedResult.Sum(p => p.Value6)); + summary.Add("Value7", pagedResult.Sum(p => p.Value7)); + summary.Add("Value8", pagedResult.Sum(p => p.Value8)); + summary.Add("Value9", pagedResult.Sum(p => p.Value9)); + summary.Add("Value10", pagedResult.Sum(p => p.Value10)); + summary.Add("Value11", pagedResult.Sum(p => p.Value11)); + summary.Add("Value12", pagedResult.Sum(p => p.Value12)); + summary.Add("Value13", pagedResult.Sum(p => p.Value13)); + summary.Add("Value14", pagedResult.Sum(p => p.Value14)); + summary.Add("Value15", pagedResult.Sum(p => p.Value15)); + summary.Add("Value16", pagedResult.Sum(p => p.Value16)); + summary.Add("Value17", pagedResult.Sum(p => p.Value17)); + summary.Add("Value18", pagedResult.Sum(p => p.Value18)); + + Grid1.SummaryData = summary; + } + + #endregion + + #region GV 数据操作 + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + this.BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + this.BindGrid(); + } + + #endregion + + + #region 关闭弹出窗 + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + } + + #endregion + + #region 导出按钮 + + /// 导出按钮 + /// + /// + /// + protected void btnOut_Click(object sender, EventArgs e) + { + Response.ClearContent(); + string filename = Funs.GetNewFileName(); + Response.AddHeader("content-disposition", + "attachment; filename=" + + System.Web.HttpUtility.UrlEncode("质量基本信息表" + filename, System.Text.Encoding.UTF8) + ".xls"); + Response.ContentType = "application/excel"; + Response.ContentEncoding = System.Text.Encoding.UTF8; + this.BindGrid(); + Response.Write(GetGridTableHtml(Grid1)); + Response.End(); + } + + /// + /// 导出方法 + /// + /// + /// + private string GetGridTableHtml(Grid grid) + { + StringBuilder sb = new StringBuilder(); + sb.Append(""); + sb.Append(""); + + // 计算总列数,用于处理表头 + int totalColumns = 0; + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + totalColumns += groupField.Columns.Count; + } + else + { + totalColumns += 1; + } + } + + // 第一行表头 - 居中显示 + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 对于分组列,使用colspan跨越子列数量,文本居中 + sb.AppendFormat("", groupField.Columns.Count, + groupField.HeaderText); + } + else + { + // 普通列,跨两行,文本居中 + sb.AppendFormat("", column.HeaderText); + } + } + + sb.Append(""); + + // 第二行表头(仅包含分组列的子列)- 居中显示 + bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null); + if (hasGroupColumns) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 添加分组列的子列标题,居中显示 + foreach (GridColumn subColumn in groupField.Columns) + { + sb.AppendFormat("", subColumn.HeaderText); + } + } + } + + sb.Append(""); + } + + // 添加数据行 + foreach (GridRow row in grid.Rows) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + string html = row.Values[subColumn.ColumnIndex].ToString(); + if (subColumn.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + else + { + // 处理普通列 + string html = row.Values[column.ColumnIndex].ToString(); + if (column.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + + sb.Append(""); + } + + // 添加合计行 + if (grid.SummaryData != null) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = subColumn.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(subColumn, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + else + { + // 处理普通列 + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = column.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(column, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName") + { + sb.Append(""); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + + sb.Append(""); + } + + sb.Append("
{1}{0}
{0}
{0}{0}
{0}{0}合计
"); + + return sb.ToString(); + } + + #endregion + + protected void btSearch_Click(object sender, EventArgs e) + { + BindGrid(); + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.designer.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.designer.cs new file mode 100644 index 00000000..eab6fb44 --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSBasicData.aspx.designer.cs @@ -0,0 +1,125 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + + + public partial class CQMSBasicData + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// txtProjectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtProjectName; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// lblNumber 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblNumber; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + } +} diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx new file mode 100644 index 00000000..2406e6f7 --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx @@ -0,0 +1,156 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSCheckData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSCheckData" %> + + + + + + + 现场质量检查 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.cs new file mode 100644 index 00000000..e1bd4c95 --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.cs @@ -0,0 +1,477 @@ +using BLL; +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + public partial class CQMSCheckData : PageBase + { + //使用DateTime.Now获取当前日期,然后获取该月第一天 + DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + + public Model.SGGLDB db = Funs.DB; + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); + // 绑定表格 + this.BindGrid(); + } + } + + #region 绑定数据 + + /// + /// 绑定数据 + /// + private void BindGrid() + { + var list = BaseDataService.GetBeUnderConstruction(); + + if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim())) + { + list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList(); + } + + var result = new List(); + foreach (var project in list) + { + int value1 = 0; + int value2 = 0; + int value3 = 0; + int value4 = 0; + string value5 = "0%"; + string value6 = "0%"; + int value7 = 0; + int value8 = 0; + int value9 = 0; + int value10 = 0; + int value11 = 0; + int value12 = 0; + int value13 = 0; + int value14 = 0; + string value15 = "0%"; + + + + #region 现场共检点、共检合格点、共检一次合格率 + + //所有集合 + List totalManagementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, "", Convert.ToDateTime("2015-01-01"), DateTime.Now, false); + //当期集合 + List managementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, "", firstDayOfMonth, DateTime.Now, false); + + + value1 = managementList.Count(); + value2 = totalManagementList.Count(); + + value3 = managementList.Count(x => x.IsOnceQualified == true); + value4 = totalManagementList.Count(x => x.IsOnceQualified == true); + + + if (value1 != 0)//被除数不能为零 + { + value5 = Math.Round((double)value3 / (double)value1 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + + if (value2 != 0)//被除数不能为零 + { + value6 = Math.Round((double)value4 / (double)value2 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + + #endregion + + + #region 计量器具管理(台套) + + var query = (from c in db.Comprehensive_InspectionMachine + where c.ProjectId == project.ProjectId && c.InspectionType.Equals("计量") + select new + { + c.InspectionDate, + c.UnitsCount, + c.ProjectId, + }).ToList(); + value7 = query.Where(x => x.InspectionDate >= firstDayOfMonth).Sum(x => x.UnitsCount ?? 0); + value8 = query.Sum(x => x.UnitsCount ?? 0); + + #endregion + + + #region 质量专项检查 + + var query1 = (from c in db.Check_JointCheck + where c.ProjectId == project.ProjectId + select new + { + c.CheckDate, + c.ProjectId, + c.CheckType + }).ToList(); + value9 = query1.Where(x => x.CheckDate >= firstDayOfMonth).Count(); + value10 = query1.Count(); + + #endregion + + #region 危险源检查 + + var query2 = from c in db.Comprehensive_NCRManagement + where c.ProjectId == project.ProjectId + select new + { + c.NCRManagementId, + c.ProjectId, + c.IssuedDate, + c.Status, + c.ImplementationFrontState, + }; + + var AllList = query2.ToList(); + var unitNCRStatic = query2.Where(x => x.IssuedDate >= firstDayOfMonth); + + + value11 = unitNCRStatic.Count(); + value12 = AllList.Count(); + + value13 = unitNCRStatic.Where(x => x.ImplementationFrontState == "已闭合").Count(); + value14 = AllList.Where(x => x.ImplementationFrontState == "已闭合").Count(); + + + + if (value12 != 0)//被除数不能为零 + { + value15 = Math.Round((double)value14 / (double)value12 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + #endregion + + // 构造动态对象用于绑定到Grid + result.Add(new + { + project.ProjectId, + project.ProjectName, + project.ShortName, + Value1 = value1, + Value2 = value2, + Value3 = value3, + Value4 = value4, + Value5 = value5, + Value6 = value6, + Value7 = value7, + Value8 = value8, + Value9 = value9, + Value10 = value10, + Value11 = value11, + Value12 = value12, + Value13 = value13, + Value14 = value14, + Value15 = value15, + }); + } + + var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList(); + Grid1.RecordCount = result.Count; + Grid1.DataSource = pagedResult; + Grid1.DataBind(); + + var Value1Sum = pagedResult.Sum(p => p.Value1); + var Value2Sum = pagedResult.Sum(p => p.Value2); + var Value3Sum = pagedResult.Sum(p => p.Value3); + var Value4Sum = pagedResult.Sum(p => p.Value4); + var Value12Sum = pagedResult.Sum(p => p.Value12); + var Value14Sum = pagedResult.Sum(p => p.Value14); + JObject summary = new JObject(); + summary.Add("ProjectName", "合计"); + summary.Add("Value1", Value1Sum); + summary.Add("Value2", Value2Sum); + summary.Add("Value3", Value3Sum); + summary.Add("Value4", Value4Sum); + if (Value1Sum != 0) + { + summary.Add("Value5", Math.Round((double)Value3Sum / (double)Value1Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value5", "0%"); + } + if (Value2Sum != 0) + { + summary.Add("Value6", Math.Round((double)Value4Sum / (double)Value2Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value6", "0%"); + } + summary.Add("Value7", pagedResult.Sum(p => p.Value7)); + summary.Add("Value8", pagedResult.Sum(p => p.Value8)); + summary.Add("Value9", pagedResult.Sum(p => p.Value9)); + summary.Add("Value10", pagedResult.Sum(p => p.Value10)); + summary.Add("Value11", pagedResult.Sum(p => p.Value11)); + summary.Add("Value12", Value12Sum); + summary.Add("Value13", pagedResult.Sum(p => p.Value13)); + summary.Add("Value14", Value14Sum); + if (Value12Sum != 0) + { + summary.Add("Value15", Math.Round((double)Value14Sum / (double)Value12Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value15", "0%"); + } + Grid1.SummaryData = summary; + } + + #endregion + + #region GV 数据操作 + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + this.BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + this.BindGrid(); + } + + #endregion + + + #region 关闭弹出窗 + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + } + + #endregion + + #region 导出按钮 + + /// 导出按钮 + /// + /// + /// + protected void btnOut_Click(object sender, EventArgs e) + { + Response.ClearContent(); + string filename = Funs.GetNewFileName(); + Response.AddHeader("content-disposition", + "attachment; filename=" + + System.Web.HttpUtility.UrlEncode("现场质量检查表" + filename, System.Text.Encoding.UTF8) + ".xls"); + Response.ContentType = "application/excel"; + Response.ContentEncoding = System.Text.Encoding.UTF8; + this.BindGrid(); + Response.Write(GetGridTableHtml(Grid1)); + Response.End(); + } + + /// + /// 导出方法 + /// + /// + /// + private string GetGridTableHtml(Grid grid) + { + StringBuilder sb = new StringBuilder(); + sb.Append(""); + sb.Append(""); + + // 计算总列数,用于处理表头 + int totalColumns = 0; + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + totalColumns += groupField.Columns.Count; + } + else + { + totalColumns += 1; + } + } + + // 第一行表头 - 居中显示 + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 对于分组列,使用colspan跨越子列数量,文本居中 + sb.AppendFormat("", groupField.Columns.Count, + groupField.HeaderText); + } + else + { + // 普通列,跨两行,文本居中 + sb.AppendFormat("", column.HeaderText); + } + } + + sb.Append(""); + + // 第二行表头(仅包含分组列的子列)- 居中显示 + bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null); + if (hasGroupColumns) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 添加分组列的子列标题,居中显示 + foreach (GridColumn subColumn in groupField.Columns) + { + sb.AppendFormat("", subColumn.HeaderText); + } + } + } + + sb.Append(""); + } + + // 添加数据行 + foreach (GridRow row in grid.Rows) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + string html = row.Values[subColumn.ColumnIndex].ToString(); + if (subColumn.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + else + { + // 处理普通列 + string html = row.Values[column.ColumnIndex].ToString(); + if (column.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + + sb.Append(""); + } + + // 添加合计行 + if (grid.SummaryData != null) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = subColumn.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(subColumn, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + else + { + // 处理普通列 + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = column.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(column, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName") + { + sb.Append(""); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + + sb.Append(""); + } + + sb.Append("
{1}{0}
{0}
{0}{0}
{0}{0}合计
"); + + return sb.ToString(); + } + + #endregion + + protected void btSearch_Click(object sender, EventArgs e) + { + BindGrid(); + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.designer.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.designer.cs new file mode 100644 index 00000000..7624e12e --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSCheckData.aspx.designer.cs @@ -0,0 +1,125 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + + + public partial class CQMSCheckData + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// txtProjectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtProjectName; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// lblNumber 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblNumber; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + } +} diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx new file mode 100644 index 00000000..62521c3b --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx @@ -0,0 +1,134 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSEquipAndMachineData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSEquipAndMachineData" %> + + + + + + + 设备材料计量器具质量文件上报 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.cs new file mode 100644 index 00000000..38c56749 --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.cs @@ -0,0 +1,438 @@ +using BLL; +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + public partial class CQMSEquipAndMachineData : PageBase + { + //使用DateTime.Now获取当前日期,然后获取该月第一天 + DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + + public Model.SGGLDB db = Funs.DB; + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); + // 绑定表格 + this.BindGrid(); + } + } + + #region 绑定数据 + + /// + /// 绑定数据 + /// + private void BindGrid() + { + var list = BaseDataService.GetBeUnderConstruction(); + + if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim())) + { + list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList(); + } + + var result = new List(); + foreach (var project in list) + { + int value1 = 0; + int value2 = 0; + string value3 = "0%"; + int value4 = 0; + int value5 = 0; + string value6 = "0%"; + int value7 = 0; + int value8 = 0; + int value9 = 0; + int value10 = 0; + int value11 = 0; + + + #region 设备材料报验 + + var query = (from c in db.Comprehensive_InspectionEquipment + where c.ProjectId == project.ProjectId + select new + { + c.SamplingResult,//1合格 2不合格 + c.ProjectId, + c.InspectionDate + }).ToList(); + + var monethCount = query.Where(x => x.InspectionDate >= firstDayOfMonth); + var AllList = query.ToList(); + + value1 = monethCount.Count(); + value2 = monethCount.Where(x => x.SamplingResult == "1").Count(); + if (value1 != 0) + { + value3 = Math.Round((double)value2 / (double)value1 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + value4 = AllList.Count(); + value5 = AllList.Where(x => x.SamplingResult == "1").Count(); + + if (value4 != 0) + { + value6 = Math.Round((double)value5 / (double)value4 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + #endregion + + + #region 计量器具管理(台套) + + var query1 = (from c in db.Comprehensive_InspectionMachine + where c.ProjectId == project.ProjectId && c.InspectionType.Equals("计量") + select new + { + c.InspectionDate, + c.UnitsCount, + c.ProjectId, + }).ToList(); + value7 = query1.Where(x => x.InspectionDate >= firstDayOfMonth).Sum(x => x.UnitsCount ?? 0); + value8 = query1.Sum(x => x.UnitsCount ?? 0); + + #endregion + + + #region 质量文件管理(数量) + + var query2 = from c in db.Comprehensive_DataReceivingDoc + where c.ProjectId == project.ProjectId + select new + { + c.ReceiveDate, + c.ProjectId, + c.IsReply, + c.RetrunWuhuangCopies, + }; + var AllList2 = query2.Where(x => x.IsReply == true).ToList(); + //本月数 + var monethCount2 = query2.Where(x => x.IsReply == true && x.ReceiveDate >= firstDayOfMonth); + + int totalReturnCount = query2.Where(x => x.IsReply == true && x.RetrunWuhuangCopies != null).Count();//总的已返回数量 + var NoBackCount = AllList2.Count() - totalReturnCount;//累计未返回数量 + + value9 = monethCount2.Count(); + value10 = AllList2.Count(); + value11 = NoBackCount; + + #endregion + + + + // 构造动态对象用于绑定到Grid + result.Add(new + { + project.ProjectId, + project.ProjectName, + project.ShortName, + Value1 = value1, + Value2 = value2, + Value3 = value3, + Value4 = value4, + Value5 = value5, + Value6 = value6, + Value7 = value7, + Value8 = value8, + Value9 = value9, + Value10 = value10, + Value11 = value11, + }); + } + + var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList(); + Grid1.RecordCount = result.Count; + Grid1.DataSource = pagedResult; + Grid1.DataBind(); + + + var Value1Sum = pagedResult.Sum(p => p.Value1); + var Value2Sum = pagedResult.Sum(p => p.Value2); + var Value4Sum = pagedResult.Sum(p => p.Value4); + var Value5Sum = pagedResult.Sum(p => p.Value5); + JObject summary = new JObject(); + summary.Add("ProjectName", "合计"); + summary.Add("Value1", Value1Sum); + summary.Add("Value2", Value2Sum); + if (Value1Sum != 0) + { + summary.Add("Value3", Math.Round((double)Value2Sum / (double)Value1Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value3", "0%"); + } + summary.Add("Value4", Value4Sum); + summary.Add("Value5", Value5Sum); + if (Value4Sum != 0) + { + summary.Add("Value6", Math.Round((double)Value5Sum / (double)Value4Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value6", "0%"); + } + summary.Add("Value7", pagedResult.Sum(p => p.Value7)); + summary.Add("Value8", pagedResult.Sum(p => p.Value8)); + summary.Add("Value9", pagedResult.Sum(p => p.Value9)); + summary.Add("Value10", pagedResult.Sum(p => p.Value10)); + summary.Add("Value11", pagedResult.Sum(p => p.Value11)); + + Grid1.SummaryData = summary; + } + + #endregion + + #region GV 数据操作 + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + this.BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + this.BindGrid(); + } + + #endregion + + + #region 关闭弹出窗 + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + } + + #endregion + + #region 导出按钮 + + /// 导出按钮 + /// + /// + /// + protected void btnOut_Click(object sender, EventArgs e) + { + Response.ClearContent(); + string filename = Funs.GetNewFileName(); + Response.AddHeader("content-disposition", + "attachment; filename=" + + System.Web.HttpUtility.UrlEncode("设备材料计量器具质量文件上报表" + filename, System.Text.Encoding.UTF8) + ".xls"); + Response.ContentType = "application/excel"; + Response.ContentEncoding = System.Text.Encoding.UTF8; + this.BindGrid(); + Response.Write(GetGridTableHtml(Grid1)); + Response.End(); + } + + /// + /// 导出方法 + /// + /// + /// + private string GetGridTableHtml(Grid grid) + { + StringBuilder sb = new StringBuilder(); + sb.Append(""); + sb.Append(""); + + // 计算总列数,用于处理表头 + int totalColumns = 0; + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + totalColumns += groupField.Columns.Count; + } + else + { + totalColumns += 1; + } + } + + // 第一行表头 - 居中显示 + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 对于分组列,使用colspan跨越子列数量,文本居中 + sb.AppendFormat("", groupField.Columns.Count, + groupField.HeaderText); + } + else + { + // 普通列,跨两行,文本居中 + sb.AppendFormat("", column.HeaderText); + } + } + + sb.Append(""); + + // 第二行表头(仅包含分组列的子列)- 居中显示 + bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null); + if (hasGroupColumns) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 添加分组列的子列标题,居中显示 + foreach (GridColumn subColumn in groupField.Columns) + { + sb.AppendFormat("", subColumn.HeaderText); + } + } + } + + sb.Append(""); + } + + // 添加数据行 + foreach (GridRow row in grid.Rows) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + string html = row.Values[subColumn.ColumnIndex].ToString(); + if (subColumn.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + else + { + // 处理普通列 + string html = row.Values[column.ColumnIndex].ToString(); + if (column.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + + sb.Append(""); + } + + // 添加合计行 + if (grid.SummaryData != null) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = subColumn.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(subColumn, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + else + { + // 处理普通列 + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = column.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(column, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName") + { + sb.Append(""); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + + sb.Append(""); + } + + sb.Append("
{1}{0}
{0}
{0}{0}
{0}{0}合计
"); + + return sb.ToString(); + } + + #endregion + + protected void btSearch_Click(object sender, EventArgs e) + { + BindGrid(); + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.designer.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.designer.cs new file mode 100644 index 00000000..471de6ab --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSEquipAndMachineData.aspx.designer.cs @@ -0,0 +1,125 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + + + public partial class CQMSEquipAndMachineData + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// txtProjectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtProjectName; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// lblNumber 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblNumber; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + } +} diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx new file mode 100644 index 00000000..16e5825e --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx @@ -0,0 +1,262 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSNoticeDetailsData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSNoticeDetailsData" %> + + + + + + + 共检点明细 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.cs new file mode 100644 index 00000000..2417c0ae --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.cs @@ -0,0 +1,663 @@ +using BLL; +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + public partial class CQMSNoticeDetailsData : PageBase + { + //使用DateTime.Now获取当前日期,然后获取该月第一天 + DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + + public Model.SGGLDB db = Funs.DB; + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); + // 绑定表格 + this.BindGrid(); + } + } + + #region 绑定数据 + + /// + /// 绑定数据 + /// + private void BindGrid() + { + var list = BaseDataService.GetBeUnderConstruction(); + + if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim())) + { + list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList(); + } + + var result = new List(); + foreach (var project in list) + { + int value1 = 0; + int value2 = 0; + int value3 = 0; + int value4 = 0; + string value5 = "0%"; + string value6 = "0%"; + int value7 = 0; + int value8 = 0; + int value9 = 0; + int value10 = 0; + string value11 = "0%"; + string value12 = "0%"; + int value13 = 0; + int value14 = 0; + int value15 = 0; + int value16 = 0; + string value17 = "0%"; + string value18 = "0%"; + int value19 = 0; + int value20 = 0; + int value21 = 0; + int value22 = 0; + string value23 = "0%"; + string value24 = "0%"; + int value25 = 0; + int value26 = 0; + int value27 = 0; + int value28 = 0; + string value29 = "0%"; + string value30 = "0%"; + + + #region 质量共检点明细 + + //专业下所有集合 + List totalManagementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, null, Convert.ToDateTime("2015-01-01"), DateTime.Now, false); + //专业下当期集合 + List managementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, null, firstDayOfMonth, DateTime.Now, false); + + + #region 土建 + + string cNProfessionalId1 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "CV" select x.CNProfessionalId).FirstOrDefault(); + //专业下所有集合 + var totalManagementList1 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId1); + //专业下当期集合 + var managementList1 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId1); + + value1 = managementList1.Count(); + value2 = totalManagementList1.Count(); + + value3 = managementList1.Count(x => x.IsOnceQualified == true); + value4 = totalManagementList1.Count(x => x.IsOnceQualified == true); + + if (value1 != 0)//被除数不能为零 + { + value5 = Math.Round((double)value3 / (double)value1 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + + if (value2 != 0)//被除数不能为零 + { + value6 = Math.Round((double)value4 / (double)value2 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + #endregion + + #region 设备 + + string cNProfessionalId2 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "EQ" select x.CNProfessionalId).FirstOrDefault(); + //专业下所有集合 + var totalManagementList2 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId2); + //专业下当期集合 + var managementList2 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId2); + + value7 = managementList2.Count(); + value8 = totalManagementList2.Count(); + + value9 = managementList2.Count(x => x.IsOnceQualified == true); + value10 = totalManagementList2.Count(x => x.IsOnceQualified == true); + + if (value7 != 0)//被除数不能为零 + { + value11 = Math.Round((double)value9 / (double)value7 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + + if (value8 != 0)//被除数不能为零 + { + value12 = Math.Round((double)value10 / (double)value8 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + #endregion + + #region 电气 + + string cNProfessionalId3 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "EL" select x.CNProfessionalId).FirstOrDefault(); + //专业下所有集合 + var totalManagementList3 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId3); + //专业下当期集合 + var managementList3 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId3); + + value13 = managementList3.Count(); + value14 = totalManagementList3.Count(); + + value15 = managementList3.Count(x => x.IsOnceQualified == true); + value16 = totalManagementList3.Count(x => x.IsOnceQualified == true); + + if (value13 != 0)//被除数不能为零 + { + value17 = Math.Round((double)value15 / (double)value13 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + + if (value14 != 0)//被除数不能为零 + { + value18 = Math.Round((double)value16 / (double)value14 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + #endregion + + #region 仪表 + + string cNProfessionalId4 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "IN" select x.CNProfessionalId).FirstOrDefault(); + //专业下所有集合 + var totalManagementList4 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId4); + //专业下当期集合 + var managementList4 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId4); + + value19 = managementList4.Count(); + value20 = totalManagementList4.Count(); + + value21 = managementList4.Count(x => x.IsOnceQualified == true); + value22 = totalManagementList4.Count(x => x.IsOnceQualified == true); + + if (value19 != 0)//被除数不能为零 + { + value23 = Math.Round((double)value21 / (double)value19 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + + if (value20 != 0)//被除数不能为零 + { + value24 = Math.Round((double)value22 / (double)value20 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + #endregion + + #region 防腐 + + string cNProfessionalId5 = (from x in db.Base_CNProfessional where x.CNProfessionalCode == "AC" select x.CNProfessionalId).FirstOrDefault(); + //专业下所有集合 + var totalManagementList5 = totalManagementList.Where(x => x.CNProfessionalId == cNProfessionalId5); + //专业下当期集合 + var managementList5 = managementList.Where(x => x.CNProfessionalId == cNProfessionalId5); + + value25 = managementList5.Count(); + value26 = totalManagementList5.Count(); + + value27 = managementList5.Count(x => x.IsOnceQualified == true); + value28 = totalManagementList5.Count(x => x.IsOnceQualified == true); + + if (value25 != 0)//被除数不能为零 + { + value29 = Math.Round((double)value27 / (double)value25 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + + if (value26 != 0)//被除数不能为零 + { + value30 = Math.Round((double)value28 / (double)value26 * 100, 2) + "%";//保留两位小数、后四舍五入 + } + + #endregion + + + #endregion + + // 构造动态对象用于绑定到Grid + result.Add(new + { + project.ProjectId, + project.ProjectName, + project.ShortName, + Value1 = value1, + Value2 = value2, + Value3 = value3, + Value4 = value4, + Value5 = value5, + Value6 = value6, + Value7 = value7, + Value8 = value8, + Value9 = value9, + Value10 = value10, + Value11 = value11, + Value12 = value12, + Value13 = value13, + Value14 = value14, + Value15 = value15, + Value16 = value16, + Value17 = value17, + Value18 = value18, + Value19 = value19, + Value20 = value20, + Value21 = value21, + Value22 = value22, + Value23 = value23, + Value24 = value24, + Value25 = value25, + Value26 = value26, + Value27 = value27, + Value28 = value28, + Value29 = value29, + Value30 = value30 + }); + } + + var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList(); + Grid1.RecordCount = result.Count; + Grid1.DataSource = pagedResult; + Grid1.DataBind(); + + + var Value1Sum = pagedResult.Sum(p => p.Value1); + var Value2Sum = pagedResult.Sum(p => p.Value2); + var Value3Sum = pagedResult.Sum(p => p.Value3); + var Value4Sum = pagedResult.Sum(p => p.Value4); + var Value7Sum = pagedResult.Sum(p => p.Value7); + var Value8Sum = pagedResult.Sum(p => p.Value8); + var Value9Sum = pagedResult.Sum(p => p.Value9); + var Value10Sum = pagedResult.Sum(p => p.Value10); + var Value13Sum = pagedResult.Sum(p => p.Value13); + var Value14Sum = pagedResult.Sum(p => p.Value14); + var Value15Sum = pagedResult.Sum(p => p.Value15); + var Value16Sum = pagedResult.Sum(p => p.Value16); + var Value19Sum = pagedResult.Sum(p => p.Value19); + var Value20Sum = pagedResult.Sum(p => p.Value20); + var Value21Sum = pagedResult.Sum(p => p.Value21); + var Value22Sum = pagedResult.Sum(p => p.Value22); + var Value25Sum = pagedResult.Sum(p => p.Value25); + var Value26Sum = pagedResult.Sum(p => p.Value26); + var Value27Sum = pagedResult.Sum(p => p.Value27); + var Value28Sum = pagedResult.Sum(p => p.Value28); + + + JObject summary = new JObject(); + summary.Add("ProjectName", "合计"); + summary.Add("Value1", Value1Sum); + summary.Add("Value2", Value2Sum); + summary.Add("Value3", Value3Sum); + summary.Add("Value4", Value4Sum); + if (Value1Sum != 0) + { + summary.Add("Value5", Math.Round((double)Value3Sum / (double)Value1Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value5", "0%"); + } + if (Value2Sum != 0) + { + summary.Add("Value6", Math.Round((double)Value4Sum / (double)Value2Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value6", "0%"); + } + summary.Add("Value7", Value7Sum); + summary.Add("Value8", Value8Sum); + summary.Add("Value9", Value9Sum); + summary.Add("Value10", Value10Sum); + if (Value7Sum != 0) + { + summary.Add("Value11", Math.Round((double)Value9Sum / (double)Value7Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value11", "0%"); + } + if (Value8Sum != 0) + { + summary.Add("Value12", Math.Round((double)Value10Sum / (double)Value8Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value12", "0%"); + } + summary.Add("Value13", Value13Sum); + summary.Add("Value14", Value14Sum); + summary.Add("Value15", Value15Sum); + summary.Add("Value16", Value16Sum); + if (Value13Sum != 0) + { + summary.Add("Value17", Math.Round((double)Value15Sum / (double)Value13Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value17", "0%"); + } + if (Value14Sum != 0) + { + summary.Add("Value18", Math.Round((double)Value16Sum / (double)Value14Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value18", "0%"); + } + summary.Add("Value19", Value19Sum); + summary.Add("Value20", Value20Sum); + summary.Add("Value21", Value21Sum); + summary.Add("Value22", Value22Sum); + if (Value19Sum != 0) + { + summary.Add("Value23", Math.Round((double)Value21Sum / (double)Value19Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value23", "0%"); + } + if (Value20Sum != 0) + { + summary.Add("Value24", Math.Round((double)Value22Sum / (double)Value20Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value24", "0%"); + } + summary.Add("Value25", Value25Sum); + summary.Add("Value26", Value26Sum); + summary.Add("Value27", Value27Sum); + summary.Add("Value28", Value28Sum); + if (Value25Sum != 0) + { + summary.Add("Value29", Math.Round((double)Value27Sum / (double)Value25Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value29", "0%"); + } + if (Value26Sum != 0) + { + summary.Add("Value30", Math.Round((double)Value28Sum / (double)Value26Sum * 100, 2) + "%"); + } + else + { + summary.Add("Value30", "0%"); + } + + Grid1.SummaryData = summary; + } + + #endregion + + #region GV 数据操作 + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + this.BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + this.BindGrid(); + } + + #endregion + + + #region 关闭弹出窗 + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + } + + #endregion + + #region 导出按钮 + + /// 导出按钮 + /// + /// + /// + protected void btnOut_Click(object sender, EventArgs e) + { + Response.ClearContent(); + string filename = Funs.GetNewFileName(); + Response.AddHeader("content-disposition", + "attachment; filename=" + + System.Web.HttpUtility.UrlEncode("共检点明细表" + filename, System.Text.Encoding.UTF8) + ".xls"); + Response.ContentType = "application/excel"; + Response.ContentEncoding = System.Text.Encoding.UTF8; + this.BindGrid(); + Response.Write(GetGridTableHtml(Grid1)); + Response.End(); + } + + /// + /// 导出方法 + /// + /// + /// + private string GetGridTableHtml(Grid grid) + { + StringBuilder sb = new StringBuilder(); + sb.Append(""); + sb.Append(""); + + // 收集所有列信息,包括嵌套的列 + List flattenedColumns = new List(); + List columnLevels = new List(); + int maxLevel = GetFlattenedColumns(grid.Columns, flattenedColumns, columnLevels, 0); + + // 生成表头 + for (int level = 0; level <= maxLevel; level++) + { + sb.Append(""); + int i = 0; + while (i < flattenedColumns.Count) + { + GridColumn column = flattenedColumns[i]; + int columnLevel = columnLevels[i]; + + if (columnLevel == level) + { + // 计算跨行和跨列数 + int rowspan = 1; + int colspan = 1; + + if (column is GroupField groupField && groupField.Columns != null && groupField.Columns.Count > 0) + { + // 这是一个分组列,计算它的子列数量 + colspan = CountLeafColumns(groupField); + rowspan = 1; + } + else + { + // 这是一个叶子列,需要跨行 + rowspan = maxLevel - level + 1; + colspan = 1; + } + + string cellValue = column.HeaderText ?? ""; + if (rowspan > 1) + { + sb.AppendFormat("", rowspan, cellValue); + } + else + { + sb.AppendFormat("", colspan, cellValue); + } + + // 跳过已处理的子列 + if (colspan > 1) + { + i += colspan; + } + else + { + i++; + } + } + else if (columnLevel < level && !(column is GroupField)) + { + // 已经由rowspan处理的单元格,跳过 + i++; + } + else + { + i++; + } + } + sb.Append(""); + } + + // 添加数据行 + foreach (GridRow row in grid.Rows) + { + sb.Append(""); + List leafColumns = GetLeafColumns(grid.Columns); + foreach (GridColumn column in leafColumns) + { + string html = row.Values[column.ColumnIndex].ToString(); + if (column.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + sb.AppendFormat("", html); + } + sb.Append(""); + } + + // 添加合计行 + if (grid.SummaryData != null) + { + sb.Append(""); + List leafColumns = GetLeafColumns(grid.Columns); + foreach (GridColumn column in leafColumns) + { + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = column.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(column, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName") + { + sb.Append(""); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + sb.Append(""); + } + + sb.Append("
{1}{1}
{0}
{0}合计
"); + + return sb.ToString(); + } + + // 获取扁平化的列结构和对应的层级 + private int GetFlattenedColumns(GridColumnCollection columns, List flattenedColumns, List columnLevels, int currentLevel) + { + int maxLevel = currentLevel; + foreach (GridColumn column in columns) + { + flattenedColumns.Add(column); + columnLevels.Add(currentLevel); + + if (column is GroupField groupField && groupField.Columns != null) + { + int childLevel = GetFlattenedColumns(groupField.Columns, flattenedColumns, columnLevels, currentLevel + 1); + if (childLevel > maxLevel) + maxLevel = childLevel; + } + } + return maxLevel; + } + + // 计算一个分组列下的叶子节点数量 + private int CountLeafColumns(GridColumn column) + { + if (column is GroupField groupField && groupField.Columns != null) + { + int count = 0; + foreach (GridColumn subColumn in groupField.Columns) + { + count += CountLeafColumns(subColumn); + } + return count; + } + else + { + return 1; + } + } + + // 获取所有叶子节点列 + private List GetLeafColumns(GridColumnCollection columns) + { + List leafColumns = new List(); + foreach (GridColumn column in columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + leafColumns.AddRange(GetLeafColumns(groupField.Columns)); + } + else + { + leafColumns.Add(column); + } + } + return leafColumns; + } + + + #endregion + + protected void btSearch_Click(object sender, EventArgs e) + { + BindGrid(); + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.designer.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.designer.cs new file mode 100644 index 00000000..5e51e48b --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/CQMSNoticeDetailsData.aspx.designer.cs @@ -0,0 +1,125 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + + + public partial class CQMSNoticeDetailsData + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// txtProjectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtProjectName; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// lblNumber 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblNumber; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + } +} diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx new file mode 100644 index 00000000..ec9fc9e5 --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx @@ -0,0 +1,154 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WeldingData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.WeldingData" %> + + + + + + + 焊接管理 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs new file mode 100644 index 00000000..b0d0267d --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs @@ -0,0 +1,424 @@ +using BLL; +using System; +using System.Text; +using System.Collections.Generic; +using System.Linq; +using Newtonsoft.Json.Linq; + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + public partial class WeldingData : PageBase + { + //使用DateTime.Now获取当前日期,然后获取该月第一天 + DateTime firstDayOfMonth = new DateTime(DateTime.Now.Year, DateTime.Now.Month, 1); + + public Model.SGGLDB db = Funs.DB; + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + this.ddlPageSize.SelectedValue = this.Grid1.PageSize.ToString(); + // 绑定表格 + this.BindGrid(); + } + } + + #region 绑定数据 + + /// + /// 绑定数据 + /// + private void BindGrid() + { + var list = BaseDataService.GetBeUnderConstruction(); + + if (!string.IsNullOrEmpty(this.txtProjectName.Text.Trim())) + { + list = list.Where(p => p.ProjectName.Contains(this.txtProjectName.Text.Trim())).ToList(); + } + + var result = new List(); + foreach (var project in list) + { + int value1 = 0; + int value2 = 0; + int value3 = 0; + int value4 = 0; + int value5 = 0; + int value6 = 0; + int value7 = 0; + int value8 = 0; + int value9 = 0; + int value10 = 0; + int value11 = 0; + int value12 = 0; + string value13 = "0%"; + string value14 = "0%"; + + + + #region 管道、钢结构、设备、其他焊工 + + var query1 = from c in db.Comprehensive_InspectionPerson + join cn in db.Base_CNProfessional on c.CNProfessionalId equals cn.CNProfessionalId into cnJoin + from cn in cnJoin.DefaultIfEmpty() + join p in db.Base_Post on c.PostId equals p.PostId into postJoin + from p in postJoin.DefaultIfEmpty() + where c.ProjectId == project.ProjectId + select new + { + c.InspectionPersonId, + c.ProjectId, + c.PersonName, + c.ApprovalTime, + cn.ProfessionalName, + p.PostName + }; + + var totalWelderList = query1.ToList(); + var welderList = query1.Where(x => x.ApprovalTime >= firstDayOfMonth); + value1 = welderList.Count(x => x.ProfessionalName == "管道" && x.PostName == "焊工"); + value2 = totalWelderList.Count(x => x.ProfessionalName == "管道" && x.PostName == "焊工"); + value3 = welderList.Count(x => x.ProfessionalName == "土建" && x.PostName == "焊工"); + value4 = totalWelderList.Count(x => x.ProfessionalName == "土建" && x.PostName == "焊工"); + value5 = welderList.Count(x => x.ProfessionalName == "设备" && x.PostName == "焊工"); + value6 = totalWelderList.Count(x => x.ProfessionalName == "设备" && x.PostName == "焊工"); + value7 = welderList.Count(x => x.ProfessionalName != "管道" && x.ProfessionalName != "土建" && x.ProfessionalName != "设备" && x.PostName == "焊工"); + value8 = totalWelderList.Count(x => x.ProfessionalName != "管道" && x.ProfessionalName != "土建" && x.ProfessionalName != "设备" && x.PostName == "焊工"); + + #endregion + + #region PQR/WPS报验 + + + // var detailsGrid9 = (from x in db.Report_Construction_Plan + // where x.ReportId == ReportId && x.ReType == "5" + // select x).ToList(); + + #endregion + + + #region 无损检测管理 + + var query2 = from c in db.ProcessControl_NondestructiveTest_New + where c.ProjectId == project.ProjectId + orderby c.CreateDate descending + select new + { + c.CreateDate, + c.ProjectId, + c.ProfessionalName, + c.MonthQuantity, + c.TotalQuantity, + c.MonthRate, + c.TotalRate + }; + + if (query2.Count()>0) + { + var data1 = query2.FirstOrDefault(x => x.ProfessionalName == "工艺管道"); + var data2 = query2.FirstOrDefault(x => x.ProfessionalName == "地管"); + var data3 = query2.FirstOrDefault(x => x.ProfessionalName == "非标"); + value11 = (int)((data1?.MonthQuantity ?? 0) + (data2?.MonthQuantity ?? 0) + (data3?.MonthQuantity ?? 0)); + value12 = (int)((data1?.TotalQuantity ?? 0) + (data2?.TotalQuantity ?? 0) + (data3?.TotalQuantity ?? 0)); + } + + + #endregion + + + // 构造动态对象用于绑定到Grid + result.Add(new + { + project.ProjectId, + project.ProjectName, + project.ShortName, + Value1 = value1,// 管道焊工本月 + Value2 = value2,// 管道焊工累计 + Value3 = value3, // 钢结构焊工本月 + Value4 = value4, // 钢结构焊工累计 + Value5 = value5, // 设备焊工本月 + Value6 = value6, // 设备焊工累计 + Value7 = value7, // 其他焊工本月 + Value8 = value8, // 其他焊工累计 + Value9 = value9, // PQR/WPS报验本月 + Value10 = value10, // PQR/WPS报验累计 + Value11 = value11, // 本月拍片数 + Value12 = value12, // 累计拍片数 + Value13 = value13, // 本月一次合格率 + Value14 = value14, // 累计一次合格率 + }); + } + + var pagedResult = result.Skip(Grid1.PageIndex * Grid1.PageSize).Take(Grid1.PageSize).ToList(); + Grid1.RecordCount = result.Count; + Grid1.DataSource = pagedResult; + Grid1.DataBind(); + + + JObject summary = new JObject(); + summary.Add("ProjectName", "合计"); + summary.Add("Value1", pagedResult.Sum(p => p.Value1)); + summary.Add("Value2", pagedResult.Sum(p => p.Value2)); + summary.Add("Value3", pagedResult.Sum(p => p.Value3)); + summary.Add("Value4", pagedResult.Sum(p => p.Value4)); + summary.Add("Value5", pagedResult.Sum(p => p.Value5)); + summary.Add("Value6", pagedResult.Sum(p => p.Value6)); + summary.Add("Value7", pagedResult.Sum(p => p.Value7)); + summary.Add("Value8", pagedResult.Sum(p => p.Value8)); + summary.Add("Value9", pagedResult.Sum(p => p.Value9)); + summary.Add("Value10", pagedResult.Sum(p => p.Value10)); + summary.Add("Value11", pagedResult.Sum(p => p.Value11)); + summary.Add("Value12", pagedResult.Sum(p => p.Value12)); + + Grid1.SummaryData = summary; + } + + #endregion + + #region GV 数据操作 + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + this.BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + this.BindGrid(); + } + + #endregion + + + #region 关闭弹出窗 + + /// + /// 关闭弹出窗 + /// + /// + /// + protected void Window1_Close(object sender, WindowCloseEventArgs e) + { + BindGrid(); + } + + #endregion + + #region 导出按钮 + + /// 导出按钮 + /// + /// + /// + protected void btnOut_Click(object sender, EventArgs e) + { + Response.ClearContent(); + string filename = Funs.GetNewFileName(); + Response.AddHeader("content-disposition", + "attachment; filename=" + + System.Web.HttpUtility.UrlEncode("焊接管理表" + filename, System.Text.Encoding.UTF8) + ".xls"); + Response.ContentType = "application/excel"; + Response.ContentEncoding = System.Text.Encoding.UTF8; + this.BindGrid(); + Response.Write(GetGridTableHtml(Grid1)); + Response.End(); + } + + /// + /// 导出方法 + /// + /// + /// + private string GetGridTableHtml(Grid grid) + { + StringBuilder sb = new StringBuilder(); + sb.Append(""); + sb.Append(""); + + // 计算总列数,用于处理表头 + int totalColumns = 0; + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + totalColumns += groupField.Columns.Count; + } + else + { + totalColumns += 1; + } + } + + // 第一行表头 - 居中显示 + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 对于分组列,使用colspan跨越子列数量,文本居中 + sb.AppendFormat("", groupField.Columns.Count, + groupField.HeaderText); + } + else + { + // 普通列,跨两行,文本居中 + sb.AppendFormat("", column.HeaderText); + } + } + + sb.Append(""); + + // 第二行表头(仅包含分组列的子列)- 居中显示 + bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null); + if (hasGroupColumns) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 添加分组列的子列标题,居中显示 + foreach (GridColumn subColumn in groupField.Columns) + { + sb.AppendFormat("", subColumn.HeaderText); + } + } + } + + sb.Append(""); + } + + // 添加数据行 + foreach (GridRow row in grid.Rows) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + string html = row.Values[subColumn.ColumnIndex].ToString(); + if (subColumn.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + else + { + // 处理普通列 + string html = row.Values[column.ColumnIndex].ToString(); + if (column.ColumnID == "tfNumber") + { + html = (row.FindControl("lblNumber") as System.Web.UI.WebControls.Label).Text; + } + + sb.AppendFormat("", html); + } + } + + sb.Append(""); + } + + // 添加合计行 + if (grid.SummaryData != null) + { + sb.Append(""); + foreach (GridColumn column in grid.Columns) + { + if (column is GroupField groupField && groupField.Columns != null) + { + // 处理分组列中的每个子列 + foreach (GridColumn subColumn in groupField.Columns) + { + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = subColumn.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(subColumn, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + else + { + // 处理普通列 + // 使用反射获取DataField属性值,避免编译错误 + var dataFieldProperty = column.GetType().GetProperty("DataField"); + if (dataFieldProperty != null) + { + string dataField = dataFieldProperty.GetValue(column, null) as string; + if (!string.IsNullOrEmpty(dataField) && grid.SummaryData.ContainsKey(dataField)) + { + sb.AppendFormat("", grid.SummaryData[dataField]); + } + else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName") + { + sb.Append(""); + } + else + { + sb.Append(""); + } + } + else + { + sb.Append(""); + } + } + } + + sb.Append(""); + } + + sb.Append("
{1}{0}
{0}
{0}{0}
{0}{0}合计
"); + + return sb.ToString(); + } + + #endregion + + protected void btSearch_Click(object sender, EventArgs e) + { + BindGrid(); + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.designer.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.designer.cs new file mode 100644 index 00000000..c295c877 --- /dev/null +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.designer.cs @@ -0,0 +1,125 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.ZHGL.CQMSData +{ + + + public partial class WeldingData + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// txtProjectName 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.TextBox txtProjectName; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// lblNumber 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.WebControls.Label lblNumber; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + } +} diff --git a/SGGL/WebAPI/WebAPI.csproj b/SGGL/WebAPI/WebAPI.csproj index 07a7c525..92e18552 100644 --- a/SGGL/WebAPI/WebAPI.csproj +++ b/SGGL/WebAPI/WebAPI.csproj @@ -168,6 +168,7 @@ + From 2f9d98c2da8c632430d2320ca9b6a2ef4cf7bac7 Mon Sep 17 00:00:00 2001 From: geh <1923421292@qq.com> Date: Fri, 22 Aug 2025 10:38:41 +0800 Subject: [PATCH 4/5] 1 --- .../ZHGL/CQMSData/WeldingData.aspx.cs | 25 ++++++++++++++++--- 1 file changed, 21 insertions(+), 4 deletions(-) diff --git a/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs index b0d0267d..8b86d520 100644 --- a/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs +++ b/SGGL/FineUIPro.Web/ZHGL/CQMSData/WeldingData.aspx.cs @@ -91,10 +91,27 @@ namespace FineUIPro.Web.ZHGL.CQMSData #region PQR/WPS报验 - - // var detailsGrid9 = (from x in db.Report_Construction_Plan - // where x.ReportId == ReportId && x.ReType == "5" - // select x).ToList(); + var query = (from x in db.Report_Construction_Plan + join y in db.Report_WeekAndMonthReport_New on x.ReportId equals y.Id into yJoin + from y in yJoin.DefaultIfEmpty() + where y.ProjectId == project.ProjectId && x.ReType == "5" + select new + { + x.Quantity1, + x.Quantity2, + x.Quantity3, + x.QuaRate, + y.CreateDate + }).ToList(); + + var sum1 = query.Sum(x => x.Quantity1 ?? 0); + var sum2 = query.Sum(x => x.Quantity2 ?? 0); + var sum3 = query.Sum(x => x.Quantity3 ?? 0); + value10 = sum1 + sum2 + sum3; + var sum4 = query.Where(x => x.CreateDate >= firstDayOfMonth).Sum(x => x.Quantity1 ?? 0); + var sum5 = query.Where(x => x.CreateDate >= firstDayOfMonth).Sum(x => x.Quantity2 ?? 0); + var sum6 = query.Where(x => x.CreateDate >= firstDayOfMonth).Sum(x => x.Quantity3 ?? 0); + value9 = sum4 + sum5 + sum6; #endregion From ce304ec7d9c2f65d39ac88d3bd1f1d5303c4fa0c Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Wed, 27 Aug 2025 11:12:41 +0800 Subject: [PATCH 5/5] =?UTF-8?q?=E5=BE=85=E5=8A=9E=E6=98=BE=E7=A4=BA?= =?UTF-8?q?=E5=85=B3=E9=94=AE=E4=BA=8B=E9=A1=B9=E7=94=B3=E8=AF=B7=E5=85=B3?= =?UTF-8?q?=E9=97=AD=E5=90=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ...V2025-08-27-xiaj(关键事项申请关闭后待办).sql | 756 ++++++++++++++++++ SGGL/BLL/SysManage/UnitService.cs | 6 + .../DesignDetailsDataInNew.aspx.cs | 3 + .../CQMS/Comprehensive/DesignDrawings.aspx | 3 + .../DesignDrawingsDataInNew.aspx.cs | 1 + .../Comprehensive/DesignDrawingsEdit.aspx.cs | 5 +- SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 10 +- .../PZHGL/GJSX/GJSXListEdit.aspx.cs | 12 +- SGGL/FineUIPro.Web/SysManage/Unit.aspx | 8 +- SGGL/FineUIPro.Web/SysManage/Unit.aspx.cs | 71 +- .../SysManage/Unit.aspx.designer.cs | 57 +- .../SysManage/UnitCleanupMerge.aspx | 95 +++ .../SysManage/UnitCleanupMerge.aspx.cs | 69 ++ .../UnitCleanupMerge.aspx.designer.cs | 107 +++ SGGL/FineUIPro.Web/common/Menu_ZHGL.xml | 6 + .../FineUIPro.Web/common/mainProject2.aspx.cs | 38 +- 16 files changed, 1188 insertions(+), 59 deletions(-) create mode 100644 DataBase/版本日志/SGGLDB_V2025-08-27-xiaj(关键事项申请关闭后待办).sql create mode 100644 SGGL/FineUIPro.Web/SysManage/UnitCleanupMerge.aspx create mode 100644 SGGL/FineUIPro.Web/SysManage/UnitCleanupMerge.aspx.cs create mode 100644 SGGL/FineUIPro.Web/SysManage/UnitCleanupMerge.aspx.designer.cs diff --git a/DataBase/版本日志/SGGLDB_V2025-08-27-xiaj(关键事项申请关闭后待办).sql b/DataBase/版本日志/SGGLDB_V2025-08-27-xiaj(关键事项申请关闭后待办).sql new file mode 100644 index 00000000..3b5e5567 --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2025-08-27-xiaj(关键事项申请关闭后待办).sql @@ -0,0 +1,756 @@ + + + +--ȡǰ˴ +ALTER PROCEDURE [dbo].[Sp_Project_GetToDoItems] + @projectId NVARCHAR(50)=NULL, + @userId NVARCHAR(200)=NULL +AS +/*ȡǰ˴*/ +BEGIN +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲ' AS MenuName + ,(case when len(register.RegisterDef)>15 then left(register.RegisterDef,15)+'...' else register.RegisterDef end)AS Content + ,UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'../HSSE/HiddenInspection/HiddenRectificationRectify.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE register.ProjectId=@projectId AND +((register.states = '1' AND (register.ResponsibleMan =@userId OR register.CCManIds LIKE ('%'+@userId+'%') )) +) +UNION ALL + +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲȷ' AS MenuName + ,(case when len(register.RegisterDef)>15 then left(register.RegisterDef,15)+'...' else register.RegisterDef end) AS Content + ,UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'../HSSE/HiddenInspection/HiddenRectificationConfirm.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE register.ProjectId=@projectId AND +register.states = '2' AND register.CheckManId =@userId + +UNION ALL +SELECT CheckControlCode AS DataId + ,'B3E99BD9-FDC7-4F15-8C3C-A7821AC9E306' AS MenuId + ,'Ѳ' AS MenuName + ,checkControl.QuestionDef AS Content + ,UserId + ,users.UserName + ,checkControl.CheckDate AS DataTime + ,CONVERT(varchar(100),checkControl.CheckDate, 23) AS DataTimeStr + ,'../CQMS/Check/ChecklistEdit.aspx?ToDo=ToDo&CheckControlCode='+checkControl.CheckControlCode AS PCUrl +FROM Check_CheckControl AS checkControl +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE checkControl.ProjectId=@projectId AND +checkControl.State != '7' AND checkControl.CheckControlCode in (select CheckControlCode from Check_CheckControlApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) + +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼ' AS MenuName + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE GJSX.ProjectId=@projectId AND +GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0 +and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0) +or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID)) +) + +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼر' AS MenuName + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +GJSX.State = 3 and GJSX.ProgressStatus=1 and (GJSX.UserID = @userId OR GJSX.User_ReceiveID = @userId ) + +--UNION ALL +--SELECT InspectionEquipmentId AS DataId +-- ,'6c2c1e5e-1812-4e1c-a683-7125518e28c7' AS MenuId +-- ,'豸ϱȷ' AS MenuName +-- ,Equipment.InspectionName AS Content +-- ,UserId +-- ,users.UserName +-- ,Equipment.InspectionDate AS DataTime +-- ,CONVERT(varchar(100),Equipment.InspectionDate, 23) AS DataTimeStr +-- ,'../CQMS/Comprehensive/InspectionEquipmentEdit.aspx?ToDo=ToDo&InspectionEquipmentId='+Equipment.InspectionEquipmentId AS PCUrl +--FROM Comprehensive_InspectionEquipment AS Equipment +--LEFT JOIN Sys_User AS users ON users.UserId =@userId +--WHERE Equipment.ProjectId=@projectId and +--Equipment.Status!='3' AND Equipment.InspectionEquipmentId in (select InspectionEquipmentId from Comprehensive_InspectionEquipmentApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) +--UNION ALL +--SELECT InspectionPersonId AS DataId +-- ,'8ed133de-5899-4687-878a-20b1f5280f18' AS MenuId +-- ,'Աȷ' AS MenuName +-- ,Person.PersonName AS Content +-- ,UserId +-- ,users.UserName +-- ,Person.CompileDate AS DataTime +-- ,CONVERT(varchar(100),Person.CompileDate, 23) AS DataTimeStr +-- ,'../CQMS/Comprehensive/InspectionPersonEdit.aspx?ToDo=ToDo&InspectionPersonId='+Person.InspectionPersonId AS PCUrl +--FROM Comprehensive_InspectionPerson AS Person +--LEFT JOIN Sys_User AS users ON users.UserId =@userId +--WHERE Person.ProjectId=@projectId and +--Person.Status!='3' AND Person.InspectionPersonId in (select InspectionPersonId from Comprehensive_InspectionPersonApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) +--UNION ALL +--SELECT InspectionMachineId AS DataId +-- ,'aa55fad1-6c51-43f5-8c99-3c6aaae79118' AS MenuId +-- ,'߱ȷ' AS MenuName +-- ,Machine.InspectionMachineName AS Content +-- ,UserId +-- ,users.UserName +-- ,Machine.CompileDate AS DataTime +-- ,CONVERT(varchar(100),Machine.CompileDate, 23) AS DataTimeStr +-- ,'../CQMS/Comprehensive/InspectionMachineEdit.aspx?ToDo=ToDo&InspectionMachineId='+Machine.InspectionMachineId AS PCUrl +--FROM Comprehensive_InspectionMachine AS Machine +--LEFT JOIN Sys_User AS users ON users.UserId =@userId +--WHERE Machine.ProjectId=@projectId and +--Machine.Status!='3' AND Machine.InspectionMachineId in (select InspectionMachineId from Comprehensive_InspectionMachineApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) +UNION ALL +SELECT ConstructSolutionId AS DataId + ,'91C4BFDB-0A51-4992-99CC-EB4EC185593D' AS MenuId + ,'ʩ' AS MenuName + ,Solution.SolutionName AS Content + ,UserId + ,users.UserName + ,Solution.CompileDate AS DataTime + ,CONVERT(varchar(100),Solution.CompileDate, 23) AS DataTimeStr + ,'../CQMS/Solution/EditConstructSolution.aspx?ToDo=ToDo&ConstructSolutionId='+Solution.ConstructSolutionId AS PCUrl +FROM Solution_CQMSConstructSolution AS Solution +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE Solution.ProjectId=@projectId and +Solution.State!='3' +AND Solution.ConstructSolutionId in +(select top 1 ConstructSolutionId from ( +SELECT Solution_CQMSConstructSolutionApprove.* +FROM Solution_CQMSConstructSolutionApprove, +(SELECT MIN([order]) AS [order],ConstructSolutionId FROM Solution_CQMSConstructSolutionApprove where ApproveType!='S' and ApproveDate is null GROUP BY ConstructSolutionId )b +WHERE Solution_CQMSConstructSolutionApprove.[order] = b.[order] and Solution_CQMSConstructSolutionApprove.ConstructSolutionId = b.ConstructSolutionId + ) approve +where approve.ApproveMan=@userId ) + +UNION ALL +SELECT InspectionId AS DataId + ,'4781f467-35bf-4cf2-aaa4-7960a175eb61' AS MenuId + ,'֪ͨ' AS MenuName + ,InspectionManagement.AcceptanceSite AS Content + ,UserId + ,users.UserName + ,InspectionManagement.CompileDate AS DataTime + ,CONVERT(varchar(100),InspectionManagement.CompileDate, 23) AS DataTimeStr + ,'../CQMS/ProcessControl/InspectionNoticeEdit.aspx?View=View&InspectionId='+InspectionManagement.InspectionId AS PCUrl +FROM ProcessControl_InspectionManagement AS InspectionManagement +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE InspectionManagement.ProjectId=@projectId and +dateadd(day,3,InspectionManagement.CompileDate)>getdate() and InspectionManagement.AcceptanceCheckMan like '%'+@userId+'%' +UNION ALL +SELECT CheckSpecialId AS DataId + ,'1B08048F-93ED-4E84-AE65-DB7917EA2DFB' AS MenuId + ,'ר' AS MenuName + ,CheckItemSet.CheckItemName AS Content + ,UserId + ,users.UserName + ,CheckSpecial.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckSpecial.CheckTime, 23) AS DataTimeStr + ,'../HSSE/Check/CheckSpecialView.aspx?CheckSpecialId='+CheckSpecial.CheckSpecialId AS PCUrl +FROM Check_CheckSpecial AS CheckSpecial +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Technique_CheckItemSet AS CheckItemSet ON CheckItemSet.CheckItemSetId =CheckSpecial.CheckItemSetId +WHERE CheckSpecial.ProjectId=@projectId and +dateadd(day,3,CheckSpecial.CheckTime)>getdate() and CheckSpecial.PartInPersonIds like '%'+@userId+'%' +UNION ALL +SELECT CheckColligationId AS DataId + ,'C198EBA8-9E23-4654-92E1-09C61105C522' AS MenuId + ,'ۺϼ' AS MenuName + ,case CheckType when '0' then 'ܼ' when '1' then '¼' else '' end AS Content + ,users.UserId + ,users.UserName + ,CheckColligation.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckColligation.CheckTime, 23) AS DataTimeStr + ,'../HSSE/Check/CheckColligationEdit.aspx?CheckColligationId='+CheckColligation.CheckColligationId AS PCUrl +FROM Check_CheckColligation AS CheckColligation +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Sys_FlowOperate AS FlowOperate ON CheckColligation.CheckColligationId=FlowOperate.DataId +LEFT JOIN Sys_User AS OperateUser ON FlowOperate.OperaterId=OperateUser.UserId +WHERE CheckColligation.ProjectId=@projectId and FlowOperate.IsClosed <> 1 and FlowOperate.OperaterId=@userId +UNION ALL +SELECT PatrolPlanId AS DataId + ,'D256E5C8-DC76-4F4D-BABE-A253418823F4' AS MenuId + ,'Ѳ' AS MenuName + ,HazardListItem.HazardItems AS Content + ,UserId + ,users.UserName + ,PatrolPlan.LimitCheckDate AS DataTime + ,CONVERT(varchar(100),PatrolPlan.LimitCheckDate, 23) AS DataTimeStr + ,'../HSSE/Hazard/RoutingInspectionEdit.aspx?PatrolPlanId='+PatrolPlan.PatrolPlanId AS PCUrl +FROM Hazard_PatrolPlan AS PatrolPlan +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Hazard_HazardSelectedItem AS HazardListItem on HazardListItem.HazardSelectedItemId=PatrolPlan.HazardSelectedItemId +WHERE HazardListItem.ProjectId=@projectId and +dateadd(day,-3,PatrolPlan.LimitCheckDate)=22 and (select COUNT(*) from JDGL_QuantityCompletion WHERE ProjectId=@projectId and DATENAME(year,GETDATE())=DATENAME(year,EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,EndDate))=0) +--or (DATEADD(day,60,(select top 1 EndDate from JDGL_QuantityCompletion WHERE ProjectId=@projectId order by EndDate desc))=22 and +DATENAME(year,GETDATE())=DATENAME(year,MonthPlan.PlanDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,MonthPlan.PlanDate) + +UNION ALL +SELECT DISTINCT --WeekPlan.WeekPlanId AS DataId + '' AS DataId + ,'56A54B4B-BBA3-4249-9FFC-3A60DAC79059' AS MenuId + ,'ȹܽȼƻδ' AS MenuName + ,'' AS Content + ,users.UserId + ,users.UserName + ,GETDATE() AS DataTime + ,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr + ,'../JDGL/Check/WeekPlanEdit.aspx?ToDo=ToDo&WeekNo='+WeekPlan.WeekNo AS PCUrl +FROM JDGL_WeekPlan AS WeekPlan +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Project_ProjectUser as pu on pu.UserId=@userId +WHERE WeekPlan.ProjectId=@projectId +and WeekPlan.DutyPerson like '%'+@userId+'%' and WeekPlan.IsOK =0 and DATENAME(DAY,GETDATE())<=DATENAME(DAY,WeekPlan.EndDate) +and DATENAME(year,GETDATE())=DATENAME(year,WeekPlan.EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,WeekPlan.EndDate) + + +ORDER BY DataTime DESC +END + + + + + +GO + + + + + +--ȡǰ˹̨Ԥ +ALTER PROCEDURE [dbo].[Sp_WorkBench_GetToDoItems] + @userId NVARCHAR(200)=NULL, + @sType char(10)=null +AS +/*ȡǰ˴*/ +BEGIN +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲ' AS MenuName + ,project.ProjectCode + ,register.RegisterDef AS Content + ,users.UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'HSSE/HiddenInspection/HiddenRectificationRectify.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and register.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +((register.states = '1' AND (register.ResponsibleMan =@userId OR register.CCManIds LIKE ('%'+@userId+'%') )) +) +UNION ALL + +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲȷ' AS MenuName + ,project.ProjectCode + ,register.RegisterDef AS Content + ,users.UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'HSSE/HiddenInspection/HiddenRectificationConfirm.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and register.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +register.states = '2' AND register.CheckManId =@userId + +UNION ALL +SELECT CheckControlCode AS DataId + ,'B3E99BD9-FDC7-4F15-8C3C-A7821AC9E306' AS MenuId + ,'Ѳ' AS MenuName + ,project.ProjectCode + ,checkControl.QuestionDef AS Content + ,users.UserId + ,users.UserName + ,checkControl.CheckDate AS DataTime + ,CONVERT(varchar(100),checkControl.CheckDate, 23) AS DataTimeStr + ,'CQMS/Check/ChecklistEdit.aspx?CheckControlCode='+checkControl.CheckControlCode AS PCUrl +FROM Check_CheckControl AS checkControl +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and checkControl.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +checkControl.State != '7' AND checkControl.CheckControlCode in (select CheckControlCode from Check_CheckControlApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) + +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼ' AS MenuName + ,project.ProjectCode + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0 +and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0) +or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID)) +) +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼر' AS MenuName + ,project.ProjectCode + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +GJSX.State = 3 and GJSX.ProgressStatus=1 and (GJSX.UserID = @userId OR GJSX.User_ReceiveID = @userId ) + + +UNION ALL +SELECT ConstructSolutionId AS DataId + ,'91C4BFDB-0A51-4992-99CC-EB4EC185593D' AS MenuId + ,'ʩ' AS MenuName + ,project.ProjectCode + ,Solution.SolutionName AS Content + ,users.UserId + ,users.UserName + ,Solution.CompileDate AS DataTime + ,CONVERT(varchar(100),Solution.CompileDate, 23) AS DataTimeStr + ,'CQMS/Solution/EditConstructSolution.aspx?ConstructSolutionId='+Solution.ConstructSolutionId AS PCUrl +FROM Solution_CQMSConstructSolution AS Solution +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and Solution.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +Solution.State!='3' +AND Solution.ConstructSolutionId in +(select top 1 ConstructSolutionId from ( +SELECT Solution_CQMSConstructSolutionApprove.* +FROM Solution_CQMSConstructSolutionApprove, +(SELECT MIN([order]) AS [order],ConstructSolutionId FROM Solution_CQMSConstructSolutionApprove where ApproveType!='S' and ApproveDate is null GROUP BY ConstructSolutionId )b +WHERE Solution_CQMSConstructSolutionApprove.[order] = b.[order] and Solution_CQMSConstructSolutionApprove.ConstructSolutionId = b.ConstructSolutionId + ) approve +where approve.ApproveMan=@userId ) + +UNION ALL +SELECT InspectionId AS DataId + ,'4781f467-35bf-4cf2-aaa4-7960a175eb61' AS MenuId + ,'֪ͨ' AS MenuName + ,project.ProjectCode + ,InspectionManagement.AcceptanceSite AS Content + ,users.UserId + ,users.UserName + ,InspectionManagement.CompileDate AS DataTime + ,CONVERT(varchar(100),InspectionManagement.CompileDate, 23) AS DataTimeStr + ,'CQMS/ProcessControl/InspectionNoticeEdit.aspx?View=View&InspectionId='+InspectionManagement.InspectionId AS PCUrl +FROM ProcessControl_InspectionManagement AS InspectionManagement +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and InspectionManagement.ProjectId=projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +dateadd(day,3,InspectionManagement.CompileDate)>getdate() and InspectionManagement.AcceptanceCheckMan like '%'+@userId+'%' +UNION ALL +SELECT CheckSpecialId AS DataId + ,'1B08048F-93ED-4E84-AE65-DB7917EA2DFB' AS MenuId + ,'ר' AS MenuName + ,project.ProjectCode + ,CheckItemSet.CheckItemName AS Content + ,users.UserId + ,users.UserName + ,CheckSpecial.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckSpecial.CheckTime, 23) AS DataTimeStr + ,'HSSE/Check/CheckSpecialView.aspx?CheckSpecialId='+CheckSpecial.CheckSpecialId AS PCUrl +FROM Check_CheckSpecial AS CheckSpecial +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +LEFT JOIN Technique_CheckItemSet AS CheckItemSet ON CheckItemSet.CheckItemSetId =CheckSpecial.CheckItemSetId +WHERE (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +dateadd(day,3,CheckSpecial.CheckTime)>getdate() and CheckSpecial.PartInPersonIds like '%'+@userId+'%' +and CheckSpecial.ProjectId = projectUser.ProjectId +UNION ALL +SELECT CheckColligationId AS DataId + ,'C198EBA8-9E23-4654-92E1-09C61105C522' AS MenuId + ,'ۺϼ' AS MenuName + ,project.ProjectCode + ,case CheckType when '0' then 'ܼ' when '1' then '¼' else '' end AS Content + ,users.UserId + ,users.UserName + ,CheckColligation.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckColligation.CheckTime, 23) AS DataTimeStr + ,'HSSE/Check/CheckColligationEdit.aspx?CheckColligationId='+CheckColligation.CheckColligationId AS PCUrl +FROM Check_CheckColligation AS CheckColligation +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +LEFT JOIN Sys_FlowOperate AS FlowOperate ON CheckColligation.CheckColligationId=FlowOperate.DataId +LEFT JOIN Sys_User AS OperateUser ON FlowOperate.OperaterId=OperateUser.UserId +WHERE (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +FlowOperate.IsClosed <> 1 and FlowOperate.OperaterId=@userId +and CheckColligation.ProjectId = projectUser.ProjectId +UNION ALL +SELECT PatrolPlanId AS DataId + ,'D256E5C8-DC76-4F4D-BABE-A253418823F4' AS MenuId + ,'Ѳ' AS MenuName + ,project.ProjectCode + ,HazardListItem.HazardItems AS Content + ,users.UserId + ,users.UserName + ,PatrolPlan.LimitCheckDate AS DataTime + ,CONVERT(varchar(100),PatrolPlan.LimitCheckDate, 23) AS DataTimeStr + ,'HSSE/Hazard/RoutingInspectionEdit.aspx?PatrolPlanId='+PatrolPlan.PatrolPlanId AS PCUrl +FROM Hazard_PatrolPlan AS PatrolPlan +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +LEFT JOIN Hazard_HazardSelectedItem AS HazardListItem on HazardListItem.HazardSelectedItemId=PatrolPlan.HazardSelectedItemId +WHERE (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +dateadd(day,-3,PatrolPlan.LimitCheckDate)=22 and (select COUNT(*) from JDGL_QuantityCompletion WHERE DATENAME(year,GETDATE())=DATENAME(year,EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,EndDate))=0) +and (@sType='1' or @sType='2') and Project.ProjectId = pu.ProjectId --or (DATEADD(day,60,(select top 1 EndDate from JDGL_QuantityCompletion WHERE ProjectId=@projectId order by EndDate desc))=22 and +DATENAME(year,GETDATE())=DATENAME(year,MonthPlan.PlanDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,MonthPlan.PlanDate) +and (project.ProjectState = '1' OR project.ProjectState IS NULL) and (@sType='1' or @sType='2') +UNION ALL +SELECT DISTINCT --WeekPlan.WeekPlanId AS DataId + '' AS DataId + ,'56A54B4B-BBA3-4249-9FFC-3A60DAC79059' AS MenuId + ,'ȹܽȼƻδ' AS MenuName + ,project.ProjectCode + ,'' AS Content + ,users.UserId + ,users.UserName + ,GETDATE() AS DataTime + ,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr + ,'JDGL/Check/WeekPlanEdit.aspx?WeekNo='+WeekPlan.WeekNo AS PCUrl +FROM JDGL_WeekPlan AS WeekPlan +LEFT JOIN Project_ProjectUser as pu on pu.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId =pu.UserId +LEFT JOIN Base_Project as project on project.ProjectId =pu.ProjectId +WHERE WeekPlan.ProjectId = pu.ProjectId +and WeekPlan.DutyPerson like '%'+@userId+'%' and WeekPlan.IsOK =0 and DATENAME(DAY,GETDATE())<=DATENAME(DAY,WeekPlan.EndDate) +and DATENAME(year,GETDATE())=DATENAME(year,WeekPlan.EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,WeekPlan.EndDate) +and (project.ProjectState = '1' OR project.ProjectState IS NULL) and (@sType='1' or @sType='2') + +ORDER BY DataTime DESC +END + + + + + +GO + + diff --git a/SGGL/BLL/SysManage/UnitService.cs b/SGGL/BLL/SysManage/UnitService.cs index 03bbdcce..07d89036 100644 --- a/SGGL/BLL/SysManage/UnitService.cs +++ b/SGGL/BLL/SysManage/UnitService.cs @@ -684,6 +684,12 @@ namespace BLL Funs.FineUIPleaseSelect(dropName); } } + + /// + /// 获取所有单位名称下拉选择项 + /// + /// + /// public static void InitAllUnitDownList(FineUIPro.DropDownList dropName, bool isShowPlease) { dropName.DataValueField = "UnitId"; diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs index e549ac0f..241e9e32 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs @@ -1,5 +1,6 @@ using Aspose.Words; using BLL; +using FineUIPro.Web.Comprehensive; using FineUIPro.Web.ProjectData; using Model; using NPOI.SS.Formula.Functions; @@ -9,6 +10,7 @@ using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; +using System.Reflection; using System.Security.Cryptography; using System.Threading; using System.Web; @@ -473,6 +475,7 @@ namespace FineUIPro.Web.CQMS.Comprehensive if (isExitISOValue != null) ///已存在 { Ins.DesignDetailsId = isExitISOValue.DesignDetailsId; + Ins.Status = isExitISOValue.Status; BLL.DesignDetailsService.UpdateDesignDetails(Ins); } else diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx index 7bfdbede..a5b90b09 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx @@ -82,6 +82,9 @@ + + <%-- diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs index 81e0e9ce..30351edc 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs @@ -496,6 +496,7 @@ namespace FineUIPro.Web.CQMS.Comprehensive if (isExitISOValue != null) ///已存在 { Ins.DesignDrawingsId = isExitISOValue.DesignDrawingsId; + Ins.Status = isExitISOValue.Status; BLL.DesignDrawingsService.UpdateDesignDrawings(Ins); } else diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs index 253cbdeb..ce4162ac 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs @@ -37,11 +37,12 @@ namespace FineUIPro.Web.CQMS.Comprehensive GetButtonPower(); BLL.CNProfessionalService.InitCNProfessionalDownList(this.drpCNProfessionalId, true); BLL.UnitWorkService.InitUnitWorkDownList(this.drpUnitWorkIds, this.CurrUser.LoginProjectId, false); - BLL.UnitService.InitUnitDownList(this.drpUnitIds, this.CurrUser.LoginProjectId, false); + //BLL.UnitService.InitUnitDownList(this.drpUnitIds, this.CurrUser.LoginProjectId, false);//总包、分包单位 + BLL.UnitService.InitAllUnitDownList(this.drpUnitIds, this.CurrUser.LoginProjectId, false);//所有单位 //LoadAuditSelect(); //this.agree.Hidden = true; //this.options.Hidden = true; - + //this.btnSave.Hidden = true; //this.btnSubmit.Hidden = true; this.DesignDrawingsId = Request.Params["DesignDrawingsId"]; diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index 6b79b476..a3ef433f 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -1918,6 +1918,7 @@ + @@ -16639,6 +16640,13 @@ Unit.aspx + + UnitCleanupMerge.aspx + ASPXCodeBehind + + + UnitCleanupMerge.aspx + UnitEdit.aspx ASPXCodeBehind @@ -20155,7 +20163,7 @@ - +