From 0899055e49fc6303eb1f366373d807d761fe0830 Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Mon, 11 Aug 2025 11:06:37 +0800 Subject: [PATCH 01/24] =?UTF-8?q?=E7=8E=B0=E5=9C=BA=E6=8E=A7=E5=88=B6?= =?UTF-8?q?=E7=82=B9=E8=B5=84=E6=96=99=E6=9F=9C=E7=95=8C=E9=9D=A2=E7=BC=96?= =?UTF-8?q?=E8=BE=91=E4=BC=98=E5=8C=96=EF=BC=9B=20=E7=8E=B0=E5=9C=BA?= =?UTF-8?q?=E6=8E=A7=E5=88=B6=E7=82=B9=E8=A3=81=E5=89=AA=E5=92=8C=E8=B5=84?= =?UTF-8?q?=E6=96=99=E6=9F=9C=E6=98=BE=E7=A4=BA=E9=AA=8C=E6=94=B6=E7=B1=BB?= =?UTF-8?q?=E5=9E=8B=E5=88=97=EF=BC=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../CQMS/WBS/ProjectControlPoint.aspx | 3 +++ .../CQMS/WBS/ProjectControlPoint.aspx.cs | 16 ++++++++++------ .../CQMS/WBS/ProjectControlPointFile.aspx | 13 +++++++++++-- .../CQMS/WBS/ProjectControlPointFile.aspx.cs | 14 +++++++++----- 4 files changed, 33 insertions(+), 13 deletions(-) diff --git a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx index 04b7fa9f..851496d2 100644 --- a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx +++ b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx @@ -86,6 +86,9 @@ + + diff --git a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx.cs b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx.cs index 24175af9..b54e197b 100644 --- a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPoint.aspx.cs @@ -65,11 +65,12 @@ namespace FineUIPro.Web.CQMS.WBS this.Grid1.Columns[3].Hidden = true; this.Grid1.Columns[4].Hidden = true; this.Grid1.Columns[5].Hidden = false; - this.Grid1.Columns[7].Hidden = false; + this.Grid1.Columns[6].Hidden = false; this.Grid1.Columns[8].Hidden = false; this.Grid1.Columns[9].Hidden = false; this.Grid1.Columns[10].Hidden = false; this.Grid1.Columns[11].Hidden = false; + this.Grid1.Columns[12].Hidden = false; } } #endregion @@ -452,25 +453,27 @@ namespace FineUIPro.Web.CQMS.WBS this.Grid1.Columns[3].Hidden = true; this.Grid1.Columns[4].Hidden = true; this.Grid1.Columns[5].Hidden = false; - this.Grid1.Columns[7].Hidden = false; + this.Grid1.Columns[6].Hidden = false; this.Grid1.Columns[8].Hidden = false; this.Grid1.Columns[9].Hidden = false; this.Grid1.Columns[10].Hidden = false; this.Grid1.Columns[11].Hidden = false; this.Grid1.Columns[12].Hidden = false; + this.Grid1.Columns[13].Hidden = false; } else { this.Grid1.Columns[2].Hidden = false; this.Grid1.Columns[3].Hidden = false; this.Grid1.Columns[4].Hidden = false; - this.Grid1.Columns[5].Hidden = true; - this.Grid1.Columns[7].Hidden = true; + this.Grid1.Columns[5].Hidden = false; + this.Grid1.Columns[6].Hidden = true; this.Grid1.Columns[8].Hidden = true; this.Grid1.Columns[9].Hidden = true; this.Grid1.Columns[10].Hidden = true; this.Grid1.Columns[11].Hidden = true; this.Grid1.Columns[12].Hidden = true; + this.Grid1.Columns[13].Hidden = true; } BindGrid(); } @@ -845,8 +848,9 @@ namespace FineUIPro.Web.CQMS.WBS /// private void BindGrid() { - string strSql = @"SELECT BreakdownProjectId,BreakdownCode,BreakdownName,Basis,CheckPoints,RecordAndCode,Class,FenBao,WuHuan,JianLi,YeZhu,Remark,ModelURL" - + @" FROM WBS_BreakdownProject "; + string strSql = @"SELECT BreakdownProjectId,BreakdownCode,BreakdownName,Basis,CheckPoints,RecordAndCode,Class,FenBao,WuHuan,JianLi,YeZhu,Remark,ModelURL +,(CASE WHEN CheckAcceptType='1' THEN '关键工序验收' WHEN CheckAcceptType='2' THEN '特殊过程验收' WHEN CheckAcceptType='3' THEN '隐蔽工程验收' WHEN CheckAcceptType='4' THEN '单位工程验收' WHEN CheckAcceptType='5' THEN '分部工程验收' WHEN CheckAcceptType='6' THEN '分项工程验收' ELSE '' END) AS CheckAcceptType +FROM WBS_BreakdownProject "; List listStr = new List(); strSql += " where DivisionProjectId = @DivisionProjectId and ProjectId=@ProjectId"; listStr.Add(new SqlParameter("@DivisionProjectId", this.trWBS.SelectedNodeID)); diff --git a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx index 51a61a1e..9801e065 100644 --- a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx +++ b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx @@ -44,13 +44,19 @@ - + PageSize="100" OnPageIndexChange="Grid1_PageIndexChange" AllowFilters="true" OnFilterChange="Grid1_FilterChange">--%> + @@ -73,6 +79,9 @@ + + diff --git a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx.cs b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx.cs index 73319341..f1413fd0 100644 --- a/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/WBS/ProjectControlPointFile.aspx.cs @@ -58,11 +58,12 @@ namespace FineUIPro.Web.CQMS.WBS this.Grid1.Columns[3].Hidden = true; this.Grid1.Columns[4].Hidden = true; this.Grid1.Columns[5].Hidden = false; - this.Grid1.Columns[7].Hidden = false; + this.Grid1.Columns[6].Hidden = false; this.Grid1.Columns[8].Hidden = false; this.Grid1.Columns[9].Hidden = false; this.Grid1.Columns[10].Hidden = false; this.Grid1.Columns[11].Hidden = false; + this.Grid1.Columns[12].Hidden = false; } } #endregion @@ -351,12 +352,13 @@ namespace FineUIPro.Web.CQMS.WBS this.Grid1.Columns[3].Hidden = true; this.Grid1.Columns[4].Hidden = true; this.Grid1.Columns[5].Hidden = false; - this.Grid1.Columns[7].Hidden = false; + this.Grid1.Columns[6].Hidden = false; this.Grid1.Columns[8].Hidden = false; this.Grid1.Columns[9].Hidden = false; this.Grid1.Columns[10].Hidden = false; this.Grid1.Columns[11].Hidden = false; this.Grid1.Columns[12].Hidden = false; + this.Grid1.Columns[13].Hidden = false; } else { @@ -364,12 +366,13 @@ namespace FineUIPro.Web.CQMS.WBS this.Grid1.Columns[3].Hidden = false; this.Grid1.Columns[4].Hidden = false; this.Grid1.Columns[5].Hidden = true; - this.Grid1.Columns[7].Hidden = true; + this.Grid1.Columns[6].Hidden = true; this.Grid1.Columns[8].Hidden = true; this.Grid1.Columns[9].Hidden = true; this.Grid1.Columns[10].Hidden = true; this.Grid1.Columns[11].Hidden = true; this.Grid1.Columns[12].Hidden = true; + this.Grid1.Columns[13].Hidden = true; } BindGrid(); } @@ -516,8 +519,9 @@ namespace FineUIPro.Web.CQMS.WBS /// private void BindGrid() { - string strSql = @"SELECT BreakdownProjectId,BreakdownCode,BreakdownName,Basis,CheckPoints,RecordAndCode,Class,FenBao,WuHuan,JianLi,YeZhu,Remark,ModelURL - FROM WBS_BreakdownProject "; + string strSql = @"SELECT BreakdownProjectId,BreakdownCode,BreakdownName,Basis,CheckPoints,RecordAndCode,Class,FenBao,WuHuan,JianLi,YeZhu,Remark,ModelURL +,(CASE WHEN CheckAcceptType='1' THEN '关键工序验收' WHEN CheckAcceptType='2' THEN '特殊过程验收' WHEN CheckAcceptType='3' THEN '隐蔽工程验收' WHEN CheckAcceptType='4' THEN '单位工程验收' WHEN CheckAcceptType='5' THEN '分部工程验收' WHEN CheckAcceptType='6' THEN '分项工程验收' ELSE '' END) AS CheckAcceptType +FROM WBS_BreakdownProject "; List listStr = new List(); strSql += " where IsSelected = 1 and DivisionProjectId = @DivisionProjectId and ProjectId=@ProjectId"; listStr.Add(new SqlParameter("@DivisionProjectId", this.trWBS.SelectedNodeID)); From ce55496fc082eee010774973b325280f670c3afe Mon Sep 17 00:00:00 2001 From: geh <1923421292@qq.com> Date: Mon, 11 Aug 2025 14:21:24 +0800 Subject: [PATCH 02/24] =?UTF-8?q?=E6=96=BD=E5=B7=A5=E4=BA=BA=E5=8A=9B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../SUBQHSE_V2025-08-04-geh(施工人力).sql | 112 ++ SGGL/BLL/BLL.csproj | 2 +- SGGL/BLL/Common/Const.cs | 7 + .../JDGL/SGManPower/ManPowerPlanService.cs | 104 ++ .../Excel/DataIn/施工人力计划导入模板.xls | Bin 0 -> 26112 bytes SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 72 ++ .../JDGL/SGManPower/ManPowerPlan.aspx | 160 +++ .../JDGL/SGManPower/ManPowerPlan.aspx.cs | 346 ++++++ .../SGManPower/ManPowerPlan.aspx.designer.cs | 98 ++ .../JDGL/SGManPower/ManPowerPlanChart.aspx | 35 + .../JDGL/SGManPower/ManPowerPlanChart.aspx.cs | 191 +++ .../ManPowerPlanChart.aspx.designer.cs | 71 ++ .../JDGL/SGManPower/ManPowerPlanEdit.aspx | 77 ++ .../JDGL/SGManPower/ManPowerPlanEdit.aspx.cs | 130 ++ .../ManPowerPlanEdit.aspx.designer.cs | 134 +++ .../JDGL/SGManPower/ManPowerPlanGrid.aspx | 106 ++ .../JDGL/SGManPower/ManPowerPlanGrid.aspx.cs | 1054 +++++++++++++++++ .../ManPowerPlanGrid.aspx.designer.cs | 188 +++ .../JDGL/SGManPower/ManPowerPlanIn.aspx | 76 ++ .../JDGL/SGManPower/ManPowerPlanIn.aspx.cs | 640 ++++++++++ .../ManPowerPlanIn.aspx.designer.cs | 125 ++ .../JDGL/SGManPower/ManPowerStat.aspx | 720 +++++++++++ .../JDGL/SGManPower/ManPowerStat.aspx.cs | 377 ++++++ .../SGManPower/ManPowerStat.aspx.designer.cs | 26 + .../JDGL/SGManPower/ManPowerWork.aspx | 45 + .../JDGL/SGManPower/ManPowerWork.aspx.cs | 34 + .../SGManPower/ManPowerWork.aspx.designer.cs | 98 ++ .../JDGL/SGManPower/ManPowerWorkChart.aspx | 104 ++ .../JDGL/SGManPower/ManPowerWorkChart.aspx.cs | 136 +++ .../ManPowerWorkChart.aspx.designer.cs | 89 ++ .../JDGL/SGManPower/ManPowerWorkGrid.aspx | 95 ++ .../JDGL/SGManPower/ManPowerWorkGrid.aspx.cs | 741 ++++++++++++ .../ManPowerWorkGrid.aspx.designer.cs | 152 +++ SGGL/Model/Model.cs | 313 +++++ 34 files changed, 6657 insertions(+), 1 deletion(-) create mode 100644 DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql create mode 100644 SGGL/BLL/JDGL/SGManPower/ManPowerPlanService.cs create mode 100644 SGGL/FineUIPro.Web/File/Excel/DataIn/施工人力计划导入模板.xls create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlan.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlan.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlan.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanChart.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanChart.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanChart.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanEdit.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanEdit.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanEdit.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanGrid.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanGrid.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanGrid.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanIn.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanIn.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerPlanIn.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.designer.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.cs create mode 100644 SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs diff --git a/DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql b/DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql new file mode 100644 index 00000000..4c3e3f23 --- /dev/null +++ b/DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql @@ -0,0 +1,112 @@ +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'B1F87873-FEC8-4BEC-8AB6-AFDEDB26ECEE', N'现场考勤人力', NULL, N'JDGL/SGManPower/ManPowerWork.aspx', 20, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'CE4D8228-3971-4F81-B992-5FC564CBFDA6', N'人力统计分析', NULL, N'JDGL/SGManPower/ManPowerStat.aspx', 30, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'D87CD627-A18C-4C5D-962D-424E582F2379', N'施工人力计划', NULL, N'JDGL/SGManPower/ManPowerPlan.aspx', 10, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); +go + +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'2DC82E2D-3578-445E-9AA2-11D65E3F8775', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'删除', 3); +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'856EA8BF-DE2D-4344-B265-780358C69F8D', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'增加', 1); +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'AC79636E-969A-42AB-82AC-19D3945EC703', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'保存', 4); +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'FEDA3FD4-2436-460F-A75A-027D2D267CE4', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'修改', 2); + +go + + + +--施工计划人力表 +CREATE TABLE [dbo].[JDGL_SGManPower] ( + [Id] nvarchar(50) COLLATE Chinese_PRC_CI_AS NOT NULL, + [ProjectId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, + [UnitId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, + [UnitWorkId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, + [WorkPostId] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, + [Version] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, + [Quantity] int NULL, + [PlanDate] datetime NULL, + [CompileMan] nvarchar(50) COLLATE Chinese_PRC_CI_AS NULL, + [CompileTime] datetime NULL, + [Remarks] nvarchar(500) COLLATE Chinese_PRC_CI_AS NULL, + CONSTRAINT [PK_JDGL_SGManPower] PRIMARY KEY CLUSTERED ([Id]) +WITH (PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) +ON [PRIMARY] +) +ON [PRIMARY] +GO + +ALTER TABLE [dbo].[JDGL_SGManPower] SET (LOCK_ESCALATION = TABLE) +GO + +EXEC sp_addextendedproperty +'MS_Description', N'主健', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'Id' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'项目id', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'ProjectId' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'单位id', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'UnitId' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'装置id', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'UnitWorkId' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'岗位id', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'WorkPostId' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'版本', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'Version' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'数量', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'Quantity' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'日期', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'PlanDate' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'编制人', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'CompileMan' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'编制时间', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'CompileTime' +GO + +EXEC sp_addextendedproperty +'MS_Description', N'备注', +'SCHEMA', N'dbo', +'TABLE', N'JDGL_SGManPower', +'COLUMN', N'Remarks' \ No newline at end of file diff --git a/SGGL/BLL/BLL.csproj b/SGGL/BLL/BLL.csproj index 1cdc35b9..f2c35878 100644 --- a/SGGL/BLL/BLL.csproj +++ b/SGGL/BLL/BLL.csproj @@ -609,6 +609,7 @@ + @@ -1311,7 +1312,6 @@ 5.0.0 - + + + + +
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ +
+
+
+
+
+
+
+
+
+
+
+
+
+ + + +
+
+
+ + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs new file mode 100644 index 00000000..22c84aed --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs @@ -0,0 +1,377 @@ +using Newtonsoft.Json; +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web.Services; +using BLL; + +namespace FineUIPro.Web.JDGL.SGManPower +{ + public partial class ManPowerStat : PageBase + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + } + } + + #region Ajax方法 + + /// + /// 通过Ajax获取图表数据 + /// + /// 数据类型: total, annual, monthly + /// 图表标识: One, Two, Three, Four + /// 序列化的图表数据 + [WebMethod(EnableSession = true)] + public static string GetChartData(string type, string chart, string year = null, string month = null) + { + try + { + // 创建页面实例以访问非静态方法 + ManPowerStat pageInstance = new ManPowerStat(); + + string title = ""; + switch (chart) + { + case "One": + title = "五环管理人员统计分析"; + break; + case "Two": + title = "施工单位管理人员统计分析"; + break; + case "Three": + title = "作业人员统计分析"; + break; + case "Four": + title = "过程人力统计分析"; + break; + } + + string result = pageInstance.GetManpowerData(type, title, year, month); + return result; + } + catch (Exception ex) + { + // 记录异常日志 + throw new Exception("数据获取失败: " + ex.Message); + } + } + + #endregion + + #region 辅助方法 + + // ... existing code ... + /// + /// 获取人力统计数据 + /// + /// 筛选类型 + /// 图表标题 + /// 年份(可选) + /// 月份(可选) + /// BusinessColumn对象 + public string GetManpowerData(string filterType, string chartTitle, string year = null, string month = null) + { + try + { + List series = new List(); + Model.BusinessColumn businessColumn = new Model.BusinessColumn(); + List listCategories = new List(); + businessColumn.title = chartTitle; + businessColumn.xFontNum = 8; + + // 延迟执行查询,只获取需要的数据 + var actualBaseQuery = Funs.DB.T_d_EmployInOutRecord.Where(x => + x.ProjectId == this.CurrUser.LoginProjectId); + + var planBaseQuery = + Funs.DB.JDGL_SGManPower.Where(x => x.ProjectId == this.CurrUser.LoginProjectId); + + //var UnitType = string.Empty; //1:总包 2:分包 + // var PostType = string.Empty; //1:一般管理岗位 4:特种管理岗位 + var Units = (from x in Funs.DB.Project_ProjectUnit + join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId + where x.ProjectId == this.CurrUser.LoginProjectId && x.UnitType == "2" + select x.UnitId).ToList(); + + var workPosts = (from x in Funs.DB.Base_WorkPost + where (x.PostType == "1" || x.PostType == "4") + select x.WorkPostId).ToList(); + + if (chartTitle == "五环管理人员统计分析") + { + actualBaseQuery = actualBaseQuery.Where(x => x.UnitId == Const.UnitId_CWCEC); + planBaseQuery = planBaseQuery.Where(x => x.UnitId == Const.UnitId_CWCEC); + } + else if (chartTitle == "施工单位管理人员统计分析") + { + actualBaseQuery = + actualBaseQuery.Where(x => Units.Contains(x.UnitId) && workPosts.Contains(x.PostId)); + planBaseQuery = + planBaseQuery.Where(x => Units.Contains(x.UnitId) && workPosts.Contains(x.WorkPostId)); + } + else if (chartTitle == "作业人员统计分析") + { + actualBaseQuery = + actualBaseQuery.Where(x => Units.Contains(x.UnitId) && !workPosts.Contains(x.PostId)); + planBaseQuery = + planBaseQuery.Where(x => Units.Contains(x.UnitId) && !workPosts.Contains(x.WorkPostId)); + } + else if (chartTitle == "过程人力统计分析") + { + } + + // 根据年份或月份筛选数据 + if (filterType == "annual" && !string.IsNullOrEmpty(year)) + { + int selectedYear = int.Parse(year); + actualBaseQuery = actualBaseQuery.Where(x => + x.RecordDate.HasValue && x.RecordDate.Value.Year == selectedYear); + planBaseQuery = + planBaseQuery.Where(x => x.PlanDate.HasValue && x.PlanDate.Value.Year == selectedYear); + } + else if (filterType == "monthly" && !string.IsNullOrEmpty(year) && !string.IsNullOrEmpty(month)) + { + int selectedYear = int.Parse(year); + int selectedMonth = int.Parse(month); + actualBaseQuery = actualBaseQuery.Where(x => x.RecordDate.HasValue && + x.RecordDate.Value.Year == selectedYear && + x.RecordDate.Value.Month == selectedMonth); + planBaseQuery = planBaseQuery.Where(x => x.PlanDate.HasValue && + x.PlanDate.Value.Year == selectedYear && + x.PlanDate.Value.Month == selectedMonth); + } + + // 根据筛选类型进行不同的分组统计 + Dictionary actualData; + Dictionary planData; + + switch (filterType) + { + case "annual": + // 按月分组(年度视图显示每个月的数据) + var actualAnnualQuery = from x in actualBaseQuery + where x.RecordDate.HasValue + group x by new { x.RecordDate.Value.Year, x.RecordDate.Value.Month } + into g + select new + { + Year = g.Key.Year, + Month = g.Key.Month, + ActualCount = g.Count() + }; + + var planAnnualQuery = from x in planBaseQuery + where x.PlanDate.HasValue + group x by new { x.PlanDate.Value.Year, x.PlanDate.Value.Month } + into g + select new + { + Year = g.Key.Year, + Month = g.Key.Month, + PlanCount = g.Sum(x => x.Quantity ?? 0) + }; + + actualData = actualAnnualQuery.ToDictionary( + x => new DateTime(x.Year, x.Month, 1), + x => (double)x.ActualCount); + + planData = planAnnualQuery.ToDictionary( + x => new DateTime(x.Year, x.Month, 1), + x => (double)x.PlanCount); + break; + + case "monthly": + // 按天分组(月度视图显示每天的数据) + var actualMonthlyQuery = from x in actualBaseQuery + where x.RecordDate.HasValue + group x by new { x.RecordDate.Value.Year, x.RecordDate.Value.Month, x.RecordDate.Value.Day } + into g + select new + { + Year = g.Key.Year, + Month = g.Key.Month, + Day = g.Key.Day, + ActualCount = g.Count() + }; + + var planMonthlyQuery = from x in planBaseQuery + where x.PlanDate.HasValue + group x by new { x.PlanDate.Value.Year, x.PlanDate.Value.Month, x.PlanDate.Value.Day } + into g + select new + { + Year = g.Key.Year, + Month = g.Key.Month, + Day = g.Key.Day, + PlanCount = g.Sum(x => x.Quantity ?? 0) + }; + + actualData = actualMonthlyQuery.ToDictionary( + x => new DateTime(x.Year, x.Month, x.Day), + x => (double)x.ActualCount); + + planData = planMonthlyQuery.ToDictionary( + x => new DateTime(x.Year, x.Month, x.Day), + x => (double)x.PlanCount); + break; + + case "total": + default: + // 按月分组(默认情况) + var actualDefaultQuery = from x in actualBaseQuery + where x.RecordDate.HasValue + group x by new { x.RecordDate.Value.Year, x.RecordDate.Value.Month } + into g + select new + { + Year = g.Key.Year, + Month = g.Key.Month, + ActualCount = g.Count() + }; + + var planDefaultQuery = from x in planBaseQuery + where x.PlanDate.HasValue + group x by new { x.PlanDate.Value.Year, x.PlanDate.Value.Month } + into g + select new + { + Year = g.Key.Year, + Month = g.Key.Month, + PlanCount = g.Sum(x => x.Quantity ?? 0) + }; + + actualData = actualDefaultQuery.ToDictionary( + x => new DateTime(x.Year, x.Month, 1), + x => (double)x.ActualCount); + + planData = planDefaultQuery.ToDictionary( + x => new DateTime(x.Year, x.Month, 1), + x => (double)x.PlanCount); + break; + } + + // 获取所有日期并排序 + var allDates = actualData.Keys.Union(planData.Keys).Distinct().OrderBy(d => d).ToList(); + + // 准备数据系列 + List actualSeries = + allDates.Select(date => actualData.ContainsKey(date) ? actualData[date] : 0).ToList(); + List planSeries = + allDates.Select(date => planData.ContainsKey(date) ? planData[date] : 0).ToList(); + + // 准备类别(横坐标) + switch (filterType) + { + case "annual": + // 显示选定年份的12个月份 + listCategories = allDates.Select(date => date.ToString("yyyy年MM月")).ToList(); + break; + case "monthly": + // 显示选定月份的每日数据 + listCategories = allDates.Select(date => date.ToString("MM月dd日")).ToList(); + break; + case "total": + default: + listCategories = allDates.Select(date => date.ToString("yyyy年MM月")).ToList(); + break; + } + + // 实际数据系列 + Model.SingleSerie actualSerie = new Model.SingleSerie + { + name = "实际", + data = actualSeries + }; + series.Add(actualSerie); + + // 计划数据系列 + Model.SingleSerie planSerie = new Model.SingleSerie + { + name = "计划", + data = planSeries + }; + series.Add(planSerie); + + businessColumn.categories = listCategories; + businessColumn.series = series; + return JsonConvert.SerializeObject(businessColumn); + } + catch (Exception ex) + { + // 记录异常日志 + // LogHelper.Error("获取人力统计数据失败", ex); + throw new Exception("数据获取失败: " + ex.Message); + } + } +// ... existing code ... + + #endregion + + #region 五环管理人员统计分析 + + /// + /// 五环管理人员统计分析 + /// + public string One + { + get + { + string dataType = Request.QueryString["type"] ?? "total"; + return GetManpowerData(dataType, "五环管理人员统计分析"); + } + } + + #endregion + + #region 施工单位管理人员统计分析 + + /// + /// 施工单位管理人员统计分析 + /// + public string Two + { + get + { + string dataType = Request.QueryString["type"] ?? "total"; + return GetManpowerData(dataType, "施工单位管理人员统计分析"); + } + } + + #endregion + + #region 作业人员统计分析 + + /// + /// 作业人员统计分析 + /// + public string Three + { + get + { + string dataType = Request.QueryString["type"] ?? "total"; + return GetManpowerData(dataType, "作业人员统计分析"); + } + } + + #endregion + + #region 过程人力统计分析 + + /// + /// 过程人力统计分析 + /// + public string Four + { + get + { + string dataType = Request.QueryString["type"] ?? "total"; + return GetManpowerData(dataType, "过程人力统计分析"); + } + } + + #endregion + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.designer.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.designer.cs new file mode 100644 index 00000000..23353898 --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.designer.cs @@ -0,0 +1,26 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.JDGL.SGManPower +{ + + + public partial class ManPowerStat + { + + /// + /// Head1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlHead Head1; + } +} diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx new file mode 100644 index 00000000..653dac6f --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx @@ -0,0 +1,45 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ManPowerWork.aspx.cs" Inherits="FineUIPro.Web.JDGL.SGManPower.ManPowerWork" %> + + + + + + 现场人力考勤 + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.cs new file mode 100644 index 00000000..2d546e52 --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.cs @@ -0,0 +1,34 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; + +namespace FineUIPro.Web.JDGL.SGManPower +{ + public partial class ManPowerWork : PageBase + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + BLL.UnitService.GetUnit(this.drpUnit, this.CurrUser.LoginProjectId, true);//单位 + this.txtStartTime.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now.AddDays(-30)); + this.txtEndTime.Text = string.Format("{0:yyyy-MM-dd}", DateTime.Now.AddDays(30)); + DropMainContractCode_SelectedIndexChanged(null, null); + } + } + + + protected void DropMainContractCode_SelectedIndexChanged(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(drpUnit.SelectedValue)) + { + panelCenterRegion.IFrameUrl = "./ManPowerWorkGrid.aspx?UnitId=" + drpUnit.SelectedValue + + "&StartTime=" + this.txtStartTime.Text + "&EndTime=" + + this.txtEndTime.Text; + } + } + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.designer.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.designer.cs new file mode 100644 index 00000000..c7909ffd --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWork.aspx.designer.cs @@ -0,0 +1,98 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.JDGL.SGManPower +{ + + + public partial class ManPowerWork + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel3 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel3; + + /// + /// panelCenterRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelCenterRegion; + + /// + /// Toolbar2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar2; + + /// + /// drpUnit 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpUnit; + + /// + /// txtStartTime 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DatePicker txtStartTime; + + /// + /// txtEndTime 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DatePicker txtEndTime; + + /// + /// btnSubmit 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnSubmit; + } +} diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx new file mode 100644 index 00000000..f62accd2 --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx @@ -0,0 +1,104 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ManPowerWorkChart.aspx.cs" Inherits="FineUIPro.Web.JDGL.SGManPower.ManPowerWorkChart" %> +<%@ Register Src="~/Controls/ChartControl.ascx" TagName="ChartControl" TagPrefix="uc1" %> + + + + + + 现场考勤人力图表 + + + + +
+ + + + + + +
← 左右滑动查看图表 →
+
+
+
+ <%--

总人力需求计划

--%> + +
+
+
+
+
+
+
+
+ + + + \ 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 new file mode 100644 index 00000000..5af304f4 --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.cs @@ -0,0 +1,136 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Web; +using System.Web.UI; +using System.Web.UI.WebControls; +using BLL; +using System.Data; +using System.Data.SqlClient; + +namespace FineUIPro.Web.JDGL.SGManPower +{ + public partial class ManPowerWorkChart : PageBase + { + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + // 初始化图表数据 + InitializeChartData(); + } + } + + private void InitializeChartData() + { + try + { + // 获取查询参数 + string unitId = Request.Params["UnitId"]; + string startTime = Request.Params["StartTime"]; + string endTime = Request.Params["EndTime"]; + string workPostId = Request.Params["WorkPostId"]; + + // 检查必要参数 + if (string.IsNullOrEmpty(startTime) || string.IsNullOrEmpty(endTime)) + { + ShowNotify("缺少必要的参数,无法生成图表", MessageBoxIcon.Warning); + return; + } + + DateTime startDate = Convert.ToDateTime(startTime); + DateTime endDate = Convert.ToDateTime(endTime); + + // 使用原生SQL查询直接在数据库中进行聚合计算,提高性能 + string strSql = @" + SELECT + RecordDate, + COUNT(1) as TotalCount + FROM T_d_EmployInOutRecord + WHERE ProjectId = @ProjectId + AND RecordDate >= @StartDate + AND RecordDate <= @EndDate"; + + var parameters = new List + { + new SqlParameter("@ProjectId", this.CurrUser.LoginProjectId), + new SqlParameter("@StartDate", startDate), + new SqlParameter("@EndDate", endDate) + }; + + // 添加单位筛选条件 + if (!string.IsNullOrEmpty(unitId) && unitId != Const._Null) + { + strSql += " AND UnitId = @UnitId"; + parameters.Add(new SqlParameter("@UnitId", unitId)); + } + + // 添加岗位筛选条件 + if (!string.IsNullOrEmpty(workPostId) && workPostId != Const._Null) + { + strSql += " AND PostId = @WorkPostId"; + parameters.Add(new SqlParameter("@WorkPostId", workPostId)); + } + + // 按日期分组并排序 + strSql += " GROUP BY RecordDate ORDER BY RecordDate"; + + // 执行查询 + var dt = SQLHelper.GetDataTableRunText(strSql, parameters.ToArray()); + + // 如果没有数据,显示提示信息 + if (dt.Rows.Count == 0) + { + ShowNotify("在指定时间范围内没有找到人力统计数据", MessageBoxIcon.Warning); + return; + } + + // 根据数据点数量动态调整图表宽度,确保每个数据点有足够的显示空间 + int chartWidth = Math.Max(1000, dt.Rows.Count * 50); // 每个数据点至少50像素宽,最小1000像素 + + // 创建图表数据对象 + Model.DataSourceChart dataSourceChart = new Model.DataSourceChart + { + Title = "现场考勤人力统计图表", + ChartType = System.Web.UI.DataVisualization.Charting.SeriesChartType.Column, + Width = chartWidth, + Height = 500, + IsNotEnable3D = false + }; + + // 创建数据系列 + Model.DataSourceTeam dataSourceTeam = new Model.DataSourceTeam + { + DataPointName = "人员数量", + DataSourcePoints = new List() + }; + + // 添加数据点 + foreach (DataRow row in dt.Rows) + { + if (row["RecordDate"] != DBNull.Value) + { + DateTime recordDate = Convert.ToDateTime(row["RecordDate"]); + int totalCount = Convert.ToInt32(row["TotalCount"]); + + Model.DataSourcePoint point = new Model.DataSourcePoint + { + PointText = recordDate.ToString("MM-dd"), + PointValue = totalCount.ToString() + }; + dataSourceTeam.DataSourcePoints.Add(point); + } + } + + dataSourceChart.DataSourceTeams = new List { dataSourceTeam }; + + // 生成图表 + Chart1.CreateChart(dataSourceChart); + } + catch (Exception ex) + { + ShowNotify($"生成图表时发生错误: {ex.Message}", MessageBoxIcon.Error); + } + } + } +} diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.designer.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.designer.cs new file mode 100644 index 00000000..4c46ad3d --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkChart.aspx.designer.cs @@ -0,0 +1,89 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.JDGL.SGManPower +{ + + + public partial class ManPowerWorkChart + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel1; + + /// + /// panelCenterRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelCenterRegion; + + /// + /// ContentPanel1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ContentPanel ContentPanel1; + + /// + /// scrollHint 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl scrollHint; + + /// + /// chartContainer 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlGenericControl chartContainer; + + /// + /// Chart1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::Web.Controls.ChartControl Chart1; + } +} diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx new file mode 100644 index 00000000..c3f47eee --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx @@ -0,0 +1,95 @@ +<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="ManPowerWorkGrid.aspx.cs" Inherits="FineUIPro.Web.JDGL.SGManPower.ManPowerWorkGrid" %> + + + + + + + 施工人力计划 + + + + +
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.cs new file mode 100644 index 00000000..49442c9d --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.cs @@ -0,0 +1,741 @@ +using BLL; +using Newtonsoft.Json.Linq; +using System; +using System.Collections.Generic; +using System.Data; +using System.Linq; +using System.Text; + +namespace FineUIPro.Web.JDGL.SGManPower +{ + public partial class ManPowerWorkGrid : PageBase + { + #region Page_Init + + // 注意:动态创建的代码需要放置于Page_Init(不是Page_Load),这样每次构造页面时都会执行 + protected void Page_Init(object sender, EventArgs e) + { + InitGrid(); + } + + public DataTable GridTable = new DataTable(); + + private void InitGrid() + { + FineUIPro.BoundField bf; + FineUIPro.RenderField rf; + FineUIPro.TextBox txTextBox; + + // 设置Grid的编辑属性 + Grid1.AllowCellEditing = true; + Grid1.ClicksToEdit = 1; + Grid1.EnableAfterEditEvent = true; + + UnitId = Request.Params["UnitId"]; + StartTime = Request.Params["StartTime"]; + EndTime = Request.Params["EndTime"]; + + GridTable.Columns.Add("Id"); + + // 添加隐藏列来存储额外的ID信息 + GridTable.Columns.Add("UnitId"); + GridTable.Columns.Add("WorkPostId"); + + ListItem[] list = new ListItem[4]; + list[0] = new ListItem("序号", "SerialNumber"); + list[1] = new ListItem("单位", "UnitName"); + list[2] = new ListItem("岗位", "WorkPostName"); + list[3] = new ListItem("累计", "TotalCount"); + + foreach (var item in list) + { + bf = new FineUIPro.BoundField(); + bf.ColumnID = item.Value; + bf.DataField = item.Value; + bf.HeaderText = item.Text; + bf.HeaderTextAlign = TextAlign.Center; + bf.TextAlign = TextAlign.Center; + bf.Locked = true; + Grid1.Columns.Add(bf); + GridTable.Columns.Add(item.Value); + } + + // 动态获取日期范围 + DateTime startDate = Convert.ToDateTime(StartTime); + DateTime endDate = Convert.ToDateTime(EndTime); + var dateRange = Enumerable.Range(0, (endDate - startDate).Days + 1) + .Select(i => startDate.AddDays(i)) + .ToList(); + + // 按年分组日期 + var groupedByYear = dateRange.GroupBy(d => d.Year) + .OrderBy(g => g.Key) + .ToList(); + + foreach (var yearGroup in groupedByYear) + { + GroupField yearGroupField = new GroupField(); + yearGroupField.HeaderText = $"{yearGroup.Key}年"; + yearGroupField.TextAlign = TextAlign.Center; + + // 按月分组 + var groupedByMonth = yearGroup.GroupBy(d => d.Month) + .OrderBy(g => g.Key) + .ToList(); + + foreach (var monthGroup in groupedByMonth) + { + GroupField monthGroupField = new GroupField(); + monthGroupField.HeaderText = $"{monthGroup.Key}月"; + monthGroupField.TextAlign = TextAlign.Center; + + // 添加具体日期的列 + foreach (var date in monthGroup.OrderBy(d => d)) + { + bf = new FineUIPro.BoundField(); + bf.ColumnID = date.ToString("yyyy-MM-dd"); + bf.DataField = date.ToString("yyyy-MM-dd"); + bf.HeaderText = date.ToString("dd"); + bf.HeaderTextAlign = TextAlign.Center; + bf.TextAlign = TextAlign.Center; + monthGroupField.Columns.Add(bf); + GridTable.Columns.Add(date.ToString("yyyy-MM-dd")); + } + + yearGroupField.Columns.Add(monthGroupField); + } + + Grid1.Columns.Add(yearGroupField); + } + } + + #endregion + + public string UnitId + { + get => (string)ViewState["UnitId"]; + set => ViewState["UnitId"] = value; + } + + public string StartTime + { + get => (string)ViewState["StartTime"]; + set => ViewState["StartTime"] = value; + } + + public string EndTime + { + get => (string)ViewState["EndTime"]; + set => ViewState["EndTime"] = value; + } + + protected void Page_Load(object sender, EventArgs e) + { + if (!IsPostBack) + { + Funs.DropDownPageSize(this.ddlPageSize); + // 设置Grid的PageSize与下拉框默认值一致 + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + WorkPostService.InitWorkPostDropDownList(this.drpWorkPost, true); //岗位 + + // 绑定表格 + this.BindGrid(); + } + } + + + #region 绑定数据 + + /// + /// 绑定数据 + /// + private void BindGrid() + { + // 清空现有数据 + GridTable.Clear(); + // 重新添加列定义(保持列结构) + if (GridTable.Columns.Count == 0) + { + GridTable.Columns.Add("Id"); + GridTable.Columns.Add("UnitId"); + GridTable.Columns.Add("WorkPostId"); + + // 添加动态日期列(这部分已经在InitGrid中定义了) + ListItem[] list = new ListItem[4]; + list[0] = new ListItem("序号", "SerialNumber"); + list[1] = new ListItem("单位", "UnitName"); + list[2] = new ListItem("岗位", "WorkPostName"); + list[3] = new ListItem("累计", "TotalCount"); + foreach (var item in list) + { + GridTable.Columns.Add(item.Value); + } + + // 日期列会在InitGrid中添加,这里不需要重复添加 + } + else + { + // 清空行数据但保持列结构 + GridTable.Rows.Clear(); + } + + // 使用原生SQL查询来提高性能,直接在数据库层面进行分组统计 + string strSql = @" + SELECT UnitId, PostId, RecordDate, COUNT(1) as RecordCount + FROM T_d_EmployInOutRecord + WHERE ProjectId = @ProjectId + AND RecordDate >= @StartDate + AND RecordDate <= @EndDate"; + + var parameters = new List + { + new System.Data.SqlClient.SqlParameter("@ProjectId", this.CurrUser.LoginProjectId), + new System.Data.SqlClient.SqlParameter("@StartDate", Convert.ToDateTime(StartTime)), + new System.Data.SqlClient.SqlParameter("@EndDate", Convert.ToDateTime(EndTime)) + }; + + if (UnitId != Const._Null) + { + strSql += " AND UnitId = @UnitId"; + parameters.Add(new System.Data.SqlClient.SqlParameter("@UnitId", UnitId)); + } + + if (drpWorkPost.SelectedValue != Const._Null) + { + strSql += " AND 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()); + + // 将数据转换为更易处理的格式 + var groupedData = new List(); + var groupedDict = new Dictionary(); + + foreach (System.Data.DataRow row in dt.Rows) + { + string key = $"{row["UnitId"]}_{row["PostId"]}"; + DateTime recordDate = Convert.ToDateTime(row["RecordDate"]); + int count = Convert.ToInt32(row["RecordCount"]); + + if (!groupedDict.ContainsKey(key)) + { + dynamic group = new System.Dynamic.ExpandoObject(); + group.UnitId = row["UnitId"]; + group.PostId = row["PostId"]; + group.DailyCounts = new Dictionary(); + group.TotalCount = 0; + groupedDict[key] = group; + groupedData.Add(group); + } + + groupedDict[key].DailyCounts[recordDate] = count; + groupedDict[key].TotalCount += count; + } + + Grid1.RecordCount = groupedData.Count(); + + // 分页处理 + var pagedData = groupedData.Skip(Grid1.PageSize * Grid1.PageIndex).Take(Grid1.PageSize).ToList(); + + // 只获取当前页需要的单位和岗位信息,避免加载全部数据 + 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 units = new Dictionary(); + var workPosts = new Dictionary(); + + if (unitIds.Any()) + { + var unitQuery = from u in Funs.DB.Base_Unit + where unitIds.Contains(u.UnitId) + select new { u.UnitId, u.UnitName }; + foreach (var u in unitQuery) + { + units[u.UnitId] = u.UnitName; + } + } + + if (postIds.Any()) + { + var postQuery = from p in Funs.DB.Base_WorkPost + where postIds.Contains(p.WorkPostId) + select new { p.WorkPostId, p.WorkPostName }; + foreach (var p in postQuery) + { + workPosts[p.WorkPostId] = p.WorkPostName; + } + } + + foreach (var group in pagedData) + { + DataRow row = GridTable.NewRow(); + + // 基本信息 + row["Id"] = Guid.NewGuid().ToString(); // 生成唯一ID用于行标识 + row["SerialNumber"] = GridTable.Rows.Count + 1; // 序号 + + // 单位信息 + string unitName = ""; + if (group.UnitId != null && units.ContainsKey(group.UnitId.ToString())) + { + unitName = units[group.UnitId.ToString()]; + } + row["UnitName"] = unitName; + row["UnitId"] = group.UnitId ?? (object)DBNull.Value; + + // 岗位信息 + string workPostName = ""; + if (group.PostId != null && workPosts.ContainsKey(group.PostId.ToString())) + { + workPostName = workPosts[group.PostId.ToString()]; + } + row["WorkPostName"] = workPostName; + row["WorkPostId"] = group.PostId ?? (object)DBNull.Value; + + // 每日数量填充 + foreach (var kvp in group.DailyCounts) + { + string dateColumnId = kvp.Key.ToString("yyyy-MM-dd"); + + // 确保列存在 + if (GridTable.Columns.Contains(dateColumnId)) + { + row[dateColumnId] = kvp.Value; + } + } + + // 设置累计数量 + row["TotalCount"] = group.TotalCount; + + GridTable.Rows.Add(row); + } + + Grid1.DataSource = GridTable; + Grid1.DataBind(); + // 计算汇总数据 + OutputSummaryData(); + } + + #region 计算合计 + + /// + /// 计算合计 + /// + private void OutputSummaryData() + { + // 创建用于存储合计值的对象 + JObject summary = new JObject(); + + // 设置固定列的合计值 + summary.Add("UnitName", "合计"); + + // 计算TotalCount列的合计值 + int totalCountSum = 0; + foreach (DataRow row in GridTable.Rows) + { + if (row["TotalCount"] != DBNull.Value && row["TotalCount"] != null) + { + int value; + if (int.TryParse(row["TotalCount"].ToString(), out value)) + { + totalCountSum += value; + } + } + } + + summary.Add("TotalCount", totalCountSum.ToString()); + + // 计算日期列的合计值 + foreach (DataColumn column in GridTable.Columns) + { + // 检查是否为日期列(格式为 yyyy-MM-dd) + DateTime date; + if (DateTime.TryParseExact(column.ColumnName, "yyyy-MM-dd", null, + System.Globalization.DateTimeStyles.None, out date)) + { + // 计算该列的合计值 + int columnSum = 0; + foreach (DataRow row in GridTable.Rows) + { + if (row[column.ColumnName] != DBNull.Value && row[column.ColumnName] != null) + { + int value; + if (int.TryParse(row[column.ColumnName].ToString(), out value)) + { + columnSum += value; + } + } + } + + summary.Add(column.ColumnName, columnSum.ToString()); + } + } + + // 设置汇总数据 + Grid1.SummaryData = summary; + } + + #endregion + + #endregion + + #region GV 数据操作 + + /// + /// 分页 + /// + /// + /// + protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e) + { + this.Grid1.PageIndex = e.NewPageIndex; + this.BindGrid(); + } + + /// + /// 排序 + /// + /// + /// + protected void Grid1_Sort(object sender, GridSortEventArgs e) + { + this.Grid1.SortDirection = e.SortDirection; + this.Grid1.SortField = e.SortField; + this.BindGrid(); + } + + /// + /// 分页显示条数下拉框 + /// + /// + /// + protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e) + { + Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue); + this.BindGrid(); + } + + #endregion + + #region 数据查询 + + /// + /// 查询 + /// + /// + /// + protected void btnQuery_OnClick(object sender, EventArgs e) + { + BindGrid(); + } + + /// + /// 统计图表 + /// + /// + /// + protected void btnGetChart_Click(object sender, EventArgs e) + { + if (!string.IsNullOrEmpty(UnitId) && !string.IsNullOrEmpty(StartTime) && !string.IsNullOrEmpty(EndTime)) + { + // 构建基础URL参数 + string urlParams = string.Format("UnitId={0}&StartTime={1}&EndTime={2}", UnitId, StartTime, EndTime); + + // 添加岗位参数(如果已选择) + if (drpWorkPost.SelectedValue != Const._Null && !string.IsNullOrEmpty(drpWorkPost.SelectedValue)) + { + urlParams += "&WorkPostId=" + drpWorkPost.SelectedValue; + } + + PageContext.RegisterStartupScript( + Window2.GetShowReference(string.Format("ManPowerWorkChart.aspx?{0}", urlParams), "人力计划图表")); + } + else + { + ShowNotify("请先选确保时间范围已设置", MessageBoxIcon.Warning); + } + } + + #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(); + // 生成并写入Excel表格 + Response.Write(GetGridTableHtml(Grid1)); + Response.End(); + } + + /// + /// 导出方法 - 支持多级表头 + /// + /// + /// + /// + private string GetGridTableHtml(Grid grid) + { + StringBuilder sb = new StringBuilder(); + + MultiHeaderTable mht = new MultiHeaderTable(); + mht.ResolveMultiHeaderTable(grid.Columns); + + sb.Append(""); + sb.Append(""); + + // 生成多级表头 + foreach (List rows in mht.MultiTable) + { + sb.Append(""); + foreach (object[] cell in rows) + { + int rowspan = 1; + int colspan = Convert.ToInt32(cell[1]); + GridColumn column = cell[2] as GridColumn; + + // 对于锁定列(固定列),确保rowspan为3 + if (column.Locked) + { + rowspan = 3; + } + + sb.AppendFormat("{3}", + " rowspan=\"" + rowspan + "\"", + colspan != 1 ? " colspan=\"" + colspan + "\"" : "", + colspan != 1 ? " style=\"text-align:center;\"" : "", + column.HeaderText); + } + + sb.Append(""); + } + + // 生成数据行 + foreach (GridRow row in grid.Rows) + { + sb.Append(""); + + foreach (GridColumn column in mht.Columns) + { + string html = row.Values[column.ColumnIndex].ToString(); + + // 特殊处理固定列 + if (column.ColumnID == "UnitName") + { + html = row.Values[column.ColumnIndex].ToString(); + } + else if (column.ColumnID == "WorkPostName") + { + html = row.Values[column.ColumnIndex].ToString(); + } + else if (column.ColumnID == "TotalCount") + { + html = row.Values[column.ColumnIndex].ToString(); + } + // 处理日期列(格式为 yyyy-MM-dd) + else if (DateTime.TryParseExact(column.ColumnID, "yyyy-MM-dd", null, + System.Globalization.DateTimeStyles.None, out _)) + { + html = row.Values[column.ColumnIndex].ToString(); + } + + sb.AppendFormat("", html); + } + + sb.Append(""); + } + + // 添加合计行 + if (grid.SummaryData != null) + { + sb.Append(""); + + foreach (GridColumn column in mht.Columns) + { + string summaryValue = ""; + // 检查SummaryData中是否有该列的合计值 + if (grid.SummaryData.Properties().Any(p => p.Name == column.ColumnID)) + { + var property = grid.SummaryData.Properties().FirstOrDefault(p => p.Name == column.ColumnID); + if (property != null) + { + summaryValue = property.Value.ToString(); + } + } + else if (column.ColumnID == "UnitName") + { + summaryValue = "合计"; + } + + sb.AppendFormat("", summaryValue); + } + + sb.Append(""); + } + + sb.Append("
{0}
{0}
"); + + return sb.ToString(); + } + + + #region 多表头处理 + + /// + /// 处理多表头的类 + /// + public class MultiHeaderTable + { + // 包含 rowspan,colspan 的多表头,方便生成 HTML 的 table 标签 + public List> MultiTable = new List>(); + + // 最终渲染的列数组 + public List Columns = new List(); + + public void ResolveMultiHeaderTable(GridColumnCollection columns) + { + List row = new List(); + foreach (GridColumn column in columns) + { + object[] cell = new object[4]; + cell[0] = 1; // rowspan + cell[1] = 1; // colspan + cell[2] = column; + cell[3] = null; + + row.Add(cell); + } + + ResolveMultiTable(row, 0); + ResolveColumns(row); + } + + private void ResolveColumns(List row) + { + foreach (object[] cell in row) + { + GroupField groupField = cell[2] as GroupField; + if (groupField != null && groupField.Columns.Count > 0) + { + List subrow = new List(); + foreach (GridColumn column in groupField.Columns) + { + subrow.Add(new object[] + { + 1, + 1, + column, + groupField + }); + } + + ResolveColumns(subrow); + } + else + { + Columns.Add(cell[2] as GridColumn); + } + } + } + + private void ResolveMultiTable(List row, int level) + { + List nextrow = new List(); + + foreach (object[] cell in row) + { + GroupField groupField = cell[2] as GroupField; + if (groupField != null && groupField.Columns.Count > 0) + { + // 如果当前列包含子列,则更改当前列的 colspan,以及增加父列(向上递归)的colspan + cell[1] = Convert.ToInt32(groupField.Columns.Count); + PlusColspan(level - 1, cell[3] as GridColumn, groupField.Columns.Count - 1); + + foreach (GridColumn column in groupField.Columns) + { + nextrow.Add(new object[] + { + 1, + 1, + column, + groupField + }); + } + } + else + { + // 如果当前列不包含子列,但不是最末级列(不是叶子节点),则增加rowspan + if (level > 0) + { + cell[0] = level + 1; + } + } + } + + MultiTable.Add(row); + + if (nextrow.Count > 0) + { + ResolveMultiTable(nextrow, level + 1); + } + } + + private void PlusColspan(int level, GridColumn column, int colspan) + { + if (level < 0) + { + return; + } + + foreach (List rows in MultiTable) + { + foreach (object[] cells in rows) + { + if (cells[2] == column) + { + cells[1] = Convert.ToInt32(cells[1]) + colspan; + + PlusColspan(level - 1, cells[3] as GridColumn, colspan); + break; + } + } + } + } + } + + #endregion + + #endregion + + } +} \ No newline at end of file diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs new file mode 100644 index 00000000..ef9efffd --- /dev/null +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerWorkGrid.aspx.designer.cs @@ -0,0 +1,152 @@ +//------------------------------------------------------------------------------ +// <自动生成> +// 此代码由工具生成。 +// +// 对此文件的更改可能导致不正确的行为,如果 +// 重新生成代码,则所做更改将丢失。 +// +//------------------------------------------------------------------------------ + +namespace FineUIPro.Web.JDGL.SGManPower +{ + + + public partial class ManPowerWorkGrid + { + + /// + /// form1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::System.Web.UI.HtmlControls.HtmlForm form1; + + /// + /// PageManager1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.PageManager PageManager1; + + /// + /// Panel3 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel Panel3; + + /// + /// panelCenterRegion 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Panel panelCenterRegion; + + /// + /// Grid1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Grid Grid1; + + /// + /// Toolbar4 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Toolbar Toolbar4; + + /// + /// drpWorkPost 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList drpWorkPost; + + /// + /// btnQuery 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnQuery; + + /// + /// btnOut 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnOut; + + /// + /// btnGetChart 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Button btnGetChart; + + /// + /// ToolbarSeparator1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1; + + /// + /// ToolbarText1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.ToolbarText ToolbarText1; + + /// + /// ddlPageSize 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.DropDownList ddlPageSize; + + /// + /// Window1 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window1; + + /// + /// Window2 控件。 + /// + /// + /// 自动生成的字段。 + /// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。 + /// + protected global::FineUIPro.Window Window2; + } +} diff --git a/SGGL/Model/Model.cs b/SGGL/Model/Model.cs index b090a5fb..ab2ea1b0 100644 --- a/SGGL/Model/Model.cs +++ b/SGGL/Model/Model.cs @@ -1412,6 +1412,9 @@ namespace Model partial void InsertJDGL_QuantityList(JDGL_QuantityList instance); partial void UpdateJDGL_QuantityList(JDGL_QuantityList instance); partial void DeleteJDGL_QuantityList(JDGL_QuantityList instance); + partial void InsertJDGL_SGManPower(JDGL_SGManPower instance); + partial void UpdateJDGL_SGManPower(JDGL_SGManPower instance); + partial void DeleteJDGL_SGManPower(JDGL_SGManPower instance); partial void InsertJDGL_SteelStructureCompletion(JDGL_SteelStructureCompletion instance); partial void UpdateJDGL_SteelStructureCompletion(JDGL_SteelStructureCompletion instance); partial void DeleteJDGL_SteelStructureCompletion(JDGL_SteelStructureCompletion instance); @@ -6544,6 +6547,14 @@ namespace Model } } + public System.Data.Linq.Table JDGL_SGManPower + { + get + { + return this.GetTable(); + } + } + public System.Data.Linq.Table JDGL_SteelStructureCompletion { get @@ -228031,6 +228042,308 @@ namespace Model } } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.JDGL_SGManPower")] + public partial class JDGL_SGManPower : INotifyPropertyChanging, INotifyPropertyChanged + { + + private static PropertyChangingEventArgs emptyChangingEventArgs = new PropertyChangingEventArgs(String.Empty); + + private string _Id; + + private string _ProjectId; + + private string _UnitId; + + private string _UnitWorkId; + + private string _WorkPostId; + + private string _Version; + + private System.Nullable _Quantity; + + private System.Nullable _PlanDate; + + private string _CompileMan; + + private System.Nullable _CompileTime; + + private string _Remarks; + + #region 可扩展性方法定义 + partial void OnLoaded(); + partial void OnValidate(System.Data.Linq.ChangeAction action); + partial void OnCreated(); + partial void OnIdChanging(string value); + partial void OnIdChanged(); + partial void OnProjectIdChanging(string value); + partial void OnProjectIdChanged(); + partial void OnUnitIdChanging(string value); + partial void OnUnitIdChanged(); + partial void OnUnitWorkIdChanging(string value); + partial void OnUnitWorkIdChanged(); + partial void OnWorkPostIdChanging(string value); + partial void OnWorkPostIdChanged(); + partial void OnVersionChanging(string value); + partial void OnVersionChanged(); + partial void OnQuantityChanging(System.Nullable value); + partial void OnQuantityChanged(); + partial void OnPlanDateChanging(System.Nullable value); + partial void OnPlanDateChanged(); + partial void OnCompileManChanging(string value); + partial void OnCompileManChanged(); + partial void OnCompileTimeChanging(System.Nullable value); + partial void OnCompileTimeChanged(); + partial void OnRemarksChanging(string value); + partial void OnRemarksChanged(); + #endregion + + public JDGL_SGManPower() + { + OnCreated(); + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Id", DbType="NVarChar(50) NOT NULL", CanBeNull=false, IsPrimaryKey=true)] + public string Id + { + get + { + return this._Id; + } + set + { + if ((this._Id != value)) + { + this.OnIdChanging(value); + this.SendPropertyChanging(); + this._Id = value; + this.SendPropertyChanged("Id"); + this.OnIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_ProjectId", DbType="NVarChar(50)")] + public string ProjectId + { + get + { + return this._ProjectId; + } + set + { + if ((this._ProjectId != value)) + { + this.OnProjectIdChanging(value); + this.SendPropertyChanging(); + this._ProjectId = value; + this.SendPropertyChanged("ProjectId"); + this.OnProjectIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitId", DbType="NVarChar(50)")] + public string UnitId + { + get + { + return this._UnitId; + } + set + { + if ((this._UnitId != value)) + { + this.OnUnitIdChanging(value); + this.SendPropertyChanging(); + this._UnitId = value; + this.SendPropertyChanged("UnitId"); + this.OnUnitIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_UnitWorkId", DbType="NVarChar(50)")] + public string UnitWorkId + { + get + { + return this._UnitWorkId; + } + set + { + if ((this._UnitWorkId != value)) + { + this.OnUnitWorkIdChanging(value); + this.SendPropertyChanging(); + this._UnitWorkId = value; + this.SendPropertyChanged("UnitWorkId"); + this.OnUnitWorkIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_WorkPostId", DbType="NVarChar(50)")] + public string WorkPostId + { + get + { + return this._WorkPostId; + } + set + { + if ((this._WorkPostId != value)) + { + this.OnWorkPostIdChanging(value); + this.SendPropertyChanging(); + this._WorkPostId = value; + this.SendPropertyChanged("WorkPostId"); + this.OnWorkPostIdChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Version", DbType="NVarChar(50)")] + public string Version + { + get + { + return this._Version; + } + set + { + if ((this._Version != value)) + { + this.OnVersionChanging(value); + this.SendPropertyChanging(); + this._Version = value; + this.SendPropertyChanged("Version"); + this.OnVersionChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Quantity", DbType="Int")] + public System.Nullable Quantity + { + get + { + return this._Quantity; + } + set + { + if ((this._Quantity != value)) + { + this.OnQuantityChanging(value); + this.SendPropertyChanging(); + this._Quantity = value; + this.SendPropertyChanged("Quantity"); + this.OnQuantityChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_PlanDate", DbType="DateTime")] + public System.Nullable PlanDate + { + get + { + return this._PlanDate; + } + set + { + if ((this._PlanDate != value)) + { + this.OnPlanDateChanging(value); + this.SendPropertyChanging(); + this._PlanDate = value; + this.SendPropertyChanged("PlanDate"); + this.OnPlanDateChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CompileMan", DbType="NVarChar(50)")] + public string CompileMan + { + get + { + return this._CompileMan; + } + set + { + if ((this._CompileMan != value)) + { + this.OnCompileManChanging(value); + this.SendPropertyChanging(); + this._CompileMan = value; + this.SendPropertyChanged("CompileMan"); + this.OnCompileManChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_CompileTime", DbType="DateTime")] + public System.Nullable CompileTime + { + get + { + return this._CompileTime; + } + set + { + if ((this._CompileTime != value)) + { + this.OnCompileTimeChanging(value); + this.SendPropertyChanging(); + this._CompileTime = value; + this.SendPropertyChanged("CompileTime"); + this.OnCompileTimeChanged(); + } + } + } + + [global::System.Data.Linq.Mapping.ColumnAttribute(Storage="_Remarks", DbType="NVarChar(500)")] + public string Remarks + { + get + { + return this._Remarks; + } + set + { + if ((this._Remarks != value)) + { + this.OnRemarksChanging(value); + this.SendPropertyChanging(); + this._Remarks = value; + this.SendPropertyChanged("Remarks"); + this.OnRemarksChanged(); + } + } + } + + public event PropertyChangingEventHandler PropertyChanging; + + public event PropertyChangedEventHandler PropertyChanged; + + protected virtual void SendPropertyChanging() + { + if ((this.PropertyChanging != null)) + { + this.PropertyChanging(this, emptyChangingEventArgs); + } + } + + protected virtual void SendPropertyChanged(String propertyName) + { + if ((this.PropertyChanged != null)) + { + this.PropertyChanged(this, new PropertyChangedEventArgs(propertyName)); + } + } + } + [global::System.Data.Linq.Mapping.TableAttribute(Name="dbo.JDGL_SteelStructureCompletion")] public partial class JDGL_SteelStructureCompletion : INotifyPropertyChanging, INotifyPropertyChanged { From 95404c80e99212f664a89172dcfe654092ea7b45 Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Mon, 11 Aug 2025 15:13:21 +0800 Subject: [PATCH 03/24] 1 --- ...GGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql | 51 +++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql diff --git a/DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql b/DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql new file mode 100644 index 00000000..afe96fac --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql @@ -0,0 +1,51 @@ + + + +--ʩԴ + +--ʩ˵ +IF NOT EXISTS (SELECT * FROM Sys_Menu WHERE MenuId = '5E34DEB4-10E6-4964-B91A-4C1A978677DB') +BEGIN +insert into Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +values('5E34DEB4-10E6-4964-B91A-4C1A978677DB','ʩ','',20,'0','Menu_JDGL',0,0,1) +insert into Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +values('AF2EBE09-739A-4618-9925-44D5C8B94C84','ʩƻ','',30,'0','Menu_JDGL',0,0,1) +insert into Sys_Menu(MenuId,MenuName,Url,SortIndex,SuperMenu,MenuType,IsOffice,IsEnd,IsUsed) +values('1BCD283A-F33C-488C-8FCA-F7B7B9C1A003','ʩ','',40,'0','Menu_JDGL',0,0,1) +END +GO + +--ʩȲ˵ +update Sys_Menu +set MenuName='ֲ嵥ü',SuperMenu='5E34DEB4-10E6-4964-B91A-4C1A978677DB' +WHERE MenuId = '858E83E9-ADE5-452E-BD65-82D8DFF872C0' +update Sys_Menu +set SuperMenu='5E34DEB4-10E6-4964-B91A-4C1A978677DB' +WHERE MenuId = '82E1EB3B-3589-4C32-9C20-40125CE6EAB4' +update Sys_Menu +set SuperMenu='5E34DEB4-10E6-4964-B91A-4C1A978677DB' +WHERE MenuId = 'E3905BF1-289B-4500-BD34-36F97D649AFC' +update Sys_Menu +set SuperMenu='5E34DEB4-10E6-4964-B91A-4C1A978677DB' +WHERE MenuId = '2A3F8526-95C7-4D30-B2DD-DD26696BE150' +update Sys_Menu +set SuperMenu='5E34DEB4-10E6-4964-B91A-4C1A978677DB' +WHERE MenuId = '59AAE0F0-2DB6-4065-B304-7E2C56EC3E5D' +update Sys_Menu +set SuperMenu='5E34DEB4-10E6-4964-B91A-4C1A978677DB' +WHERE MenuId = 'D1FC6ACA-C789-401C-B9FB-3A96FFE4C8AC' +update Sys_Menu +set SuperMenu='5E34DEB4-10E6-4964-B91A-4C1A978677DB' +WHERE MenuId = '9CAF311E-C234-4DA4-B235-D4E478FBD80E' +GO + +--ʩƻ˵ +update Sys_Menu +set SuperMenu='AF2EBE09-739A-4618-9925-44D5C8B94C84' +WHERE MenuId = '94287B92-7E96-4B90-BC6F-DAF30AE3B314' +update Sys_Menu +set SuperMenu='AF2EBE09-739A-4618-9925-44D5C8B94C84' +WHERE MenuId = '56A54B4B-BBA3-4249-9FFC-3A60DAC79059' +GO + + From 2ac352bdeaec2d6721c9c735d64319b9aa6fcf94 Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Tue, 12 Aug 2025 09:46:05 +0800 Subject: [PATCH 04/24] 1 --- ...GGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql | 18 ++++++++++++++++++ .../SUBQHSE_V2025-08-04-geh(施工人力).sql | 13 +------------ .../Excel/DataIn/施工人力计划导入模板.xls | Bin 26112 -> 19968 bytes SGGL/FineUIPro.Web/common/Menu_JDGL.xml | 5 ++++- 4 files changed, 23 insertions(+), 13 deletions(-) diff --git a/DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql b/DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql index afe96fac..2bbc9e46 100644 --- a/DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql +++ b/DataBase/版本日志/SGGLDB_V2025-08-03-xiaj(施工人力资源菜单).sql @@ -49,3 +49,21 @@ WHERE MenuId = '56A54B4B-BBA3-4249-9FFC-3A60DAC79059' GO + +--ʩӲ˵ +IF NOT EXISTS (SELECT * FROM Sys_Menu WHERE MenuId = 'D87CD627-A18C-4C5D-962D-424E582F2379') +BEGIN +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'B1F87873-FEC8-4BEC-8AB6-AFDEDB26ECEE', N'ֳ', NULL, N'JDGL/SGManPower/ManPowerWork.aspx', 20, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'CE4D8228-3971-4F81-B992-5FC564CBFDA6', N'ͳƷ', NULL, N'JDGL/SGManPower/ManPowerStat.aspx', 30, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'D87CD627-A18C-4C5D-962D-424E582F2379', N'ʩƻ', NULL, N'JDGL/SGManPower/ManPowerPlan.aspx', 10, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); +END +GO + +IF NOT EXISTS (SELECT * FROM Sys_ButtonToMenu WHERE MenuId = 'D87CD627-A18C-4C5D-962D-424E582F2379') +BEGIN +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'2DC82E2D-3578-445E-9AA2-11D65E3F8775', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'ɾ', 3); +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'856EA8BF-DE2D-4344-B265-780358C69F8D', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'', 1); +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'AC79636E-969A-42AB-82AC-19D3945EC703', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'', 4); +INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'FEDA3FD4-2436-460F-A75A-027D2D267CE4', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'޸', 2); +END +GO diff --git a/DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql b/DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql index 4c3e3f23..b351dae2 100644 --- a/DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql +++ b/DataBase/版本日志/SUBQHSE_V2025-08-04-geh(施工人力).sql @@ -1,15 +1,4 @@ -INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'B1F87873-FEC8-4BEC-8AB6-AFDEDB26ECEE', N'现场考勤人力', NULL, N'JDGL/SGManPower/ManPowerWork.aspx', 20, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); -INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'CE4D8228-3971-4F81-B992-5FC564CBFDA6', N'人力统计分析', NULL, N'JDGL/SGManPower/ManPowerStat.aspx', 30, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); -INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) VALUES (N'D87CD627-A18C-4C5D-962D-424E582F2379', N'施工人力计划', NULL, N'JDGL/SGManPower/ManPowerPlan.aspx', 10, N'1BCD283A-F33C-488C-8FCA-F7B7B9C1A003', N'Menu_JDGL', '0', '0', '1'); -go - -INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'2DC82E2D-3578-445E-9AA2-11D65E3F8775', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'删除', 3); -INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'856EA8BF-DE2D-4344-B265-780358C69F8D', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'增加', 1); -INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'AC79636E-969A-42AB-82AC-19D3945EC703', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'保存', 4); -INSERT INTO [dbo].[Sys_ButtonToMenu] ([ButtonToMenuId], [MenuId], [ButtonName], [SortIndex]) VALUES (N'FEDA3FD4-2436-460F-A75A-027D2D267CE4', N'D87CD627-A18C-4C5D-962D-424E582F2379', N'修改', 2); - -go - + --施工计划人力表 diff --git a/SGGL/FineUIPro.Web/File/Excel/DataIn/施工人力计划导入模板.xls b/SGGL/FineUIPro.Web/File/Excel/DataIn/施工人力计划导入模板.xls index 0b9dd7e31c6626b90e20cfbabe427e883e7b4b96..a021df98c344f02ceb77aee64573dbcb9ca7b2bf 100644 GIT binary patch literal 19968 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 RTm`_W=n6D^?ft*o{U25Iivs`v literal 26112 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 - + + + + From cfd482481114a737e38bcc897e8285c33561b081 Mon Sep 17 00:00:00 2001 From: geh <1923421292@qq.com> Date: Mon, 18 Aug 2025 10:58:52 +0800 Subject: [PATCH 05/24] 1 --- SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs | 2 -- 1 file changed, 2 deletions(-) diff --git a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs index 22c84aed..c23658a0 100644 --- a/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs +++ b/SGGL/FineUIPro.Web/JDGL/SGManPower/ManPowerStat.aspx.cs @@ -63,7 +63,6 @@ namespace FineUIPro.Web.JDGL.SGManPower #region 辅助方法 - // ... existing code ... /// /// 获取人力统计数据 /// @@ -306,7 +305,6 @@ namespace FineUIPro.Web.JDGL.SGManPower throw new Exception("数据获取失败: " + ex.Message); } } -// ... existing code ... #endregion From 00a200374954211561220a094da1469424f15f0b Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Mon, 18 Aug 2025 15:31:13 +0800 Subject: [PATCH 06/24] 1 --- .../Supervise/SuperviseCheckReport.aspx.cs | 2 +- .../PublishProfiles/FolderProfile.pubxml.user | 20 +++++++++---------- 2 files changed, 11 insertions(+), 11 deletions(-) diff --git a/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs index 9e7e978e..090e1109 100644 --- a/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs +++ b/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs @@ -64,7 +64,7 @@ WHERE 1=1 "; strSql += " AND P.UnitId = @UnitId"; listStr.Add(new SqlParameter("@UnitId", this.CurrUser.UnitId)); } - if (this.drpCheckMainType.SelectedValue != BLL.Const._Null) + if (this.drpCheckMainType.SelectedValue != null && this.drpCheckMainType.SelectedValue != BLL.Const._Null) { strSql += " AND S.CheckMainType = @CheckMainType"; listStr.Add(new SqlParameter("@CheckMainType", this.drpCheckMainType.SelectedValue)); diff --git a/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user b/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user index c70d6f88..7304edda 100644 --- a/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user +++ b/SGGL/WebAPI/Properties/PublishProfiles/FolderProfile.pubxml.user @@ -86,22 +86,22 @@ 10/28/2024 14:02:50 - 08/09/2025 21:27:29 + 08/14/2025 14:02:03 - 08/09/2025 21:27:29 + 08/14/2025 14:02:03 12/06/2024 20:13:58 - 08/09/2025 21:26:40 + 08/14/2025 14:01:40 12/26/2024 09:46:52 - 08/09/2025 21:26:40 + 08/14/2025 14:01:40 12/18/2020 05:32:28 @@ -128,10 +128,10 @@ 07/25/2012 19:48:56 - 08/09/2025 21:26:31 + 08/14/2025 14:01:22 - 08/09/2025 21:26:31 + 08/14/2025 14:01:22 07/04/2024 14:13:01 @@ -389,13 +389,13 @@ 02/09/2013 00:42:28 - 08/09/2025 21:26:46 + 08/14/2025 14:01:44 - 08/09/2025 21:26:46 + 08/14/2025 14:01:44 - 08/09/2025 21:26:45 + 08/14/2025 14:01:43 01/23/2014 21:57:34 @@ -479,7 +479,7 @@ 10/28/2024 14:02:50 - 08/09/2025 21:26:47 + 08/14/2025 14:01:45 10/28/2024 14:02:50 From bd3af6400e46ba984d148735388f7f4c904b5b4f Mon Sep 17 00:00:00 2001 From: xiaju <1784803958@qq.com> Date: Mon, 18 Aug 2025 18:25:35 +0800 Subject: [PATCH 07/24] 1 --- SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs b/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs index 090e1109..0634c620 100644 --- a/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs +++ b/SGGL/FineUIPro.Web/ZHGL/Supervise/SuperviseCheckReport.aspx.cs @@ -61,7 +61,8 @@ WHERE 1=1 "; var thisUnit = BLL.CommonService.GetIsThisUnit(); if (!string.IsNullOrEmpty(this.CurrUser.UnitId) && thisUnit.UnitId != this.CurrUser.UnitId) { - strSql += " AND P.UnitId = @UnitId"; + //strSql += " AND P.UnitId = @UnitId"; + strSql += " AND (U.UnitId = @UnitId or CU.UnitId = @UnitId)"; listStr.Add(new SqlParameter("@UnitId", this.CurrUser.UnitId)); } if (this.drpCheckMainType.SelectedValue != null && this.drpCheckMainType.SelectedValue != BLL.Const._Null) From 9efd05b6507dc5b4bc7f954972f3d3790f799dac Mon Sep 17 00:00:00 2001 From: gaofei1985 <181547018@qq.com> Date: Thu, 21 Aug 2025 11:13:42 +0800 Subject: [PATCH 08/24] 1 --- SGGL/FineUIPro.Web/FineUIPro.Web.csproj | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index f898226a..49595194 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -19815,7 +19815,7 @@ - +