This commit is contained in:
高飞 2025-09-01 16:43:57 +08:00
commit 8d634b6606
40 changed files with 6000 additions and 103 deletions

View File

@ -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)<getdate() and PatrolPlan.DutyPerson=@userId
and (select COUNT(*) from Hazard_RoutingInspection ri where ri.PatrolPlanId=PatrolPlan.PatrolPlanId)=0
UNION ALL
SELECT PersonQuality.PersonId AS DataId
,'EBEA762D-1F46-47C5-9EAD-759E13D9B41C' AS MenuId
,'特种作业人员资质还有'+convert(nvarchar(6),DATEDIFF(day,getdate(),PersonQuality.LimitDate))+'天过期' AS MenuName
,Person.PersonName AS Content
,users.UserId
,users.UserName
,PersonQuality.LimitDate AS DataTime
,CONVERT(varchar(100),PersonQuality.LimitDate, 23) AS DataTimeStr
,'../HSSE/QualityAudit/PersonQualityEdit.aspx?PersonId='+PersonQuality.PersonId AS PCUrl
FROM QualityAudit_PersonQuality AS PersonQuality
LEFT JOIN Sys_User AS users ON users.UserId =@userId
LEFT JOIN SitePerson_Person AS Person on Person.PersonId=PersonQuality.PersonId
WHERE Person.ProjectId=@projectId and Person.IsUsed=1 and Person.InTime<getdate() and (Person.OutTime is null or Person.OutTime >getdate() ) and
dateadd(day,-15,PersonQuality.LimitDate)<getdate() and getdate()<PersonQuality.LimitDate
UNION ALL
SELECT PersonQuality.PersonId AS DataId
,'EBEA762D-1F46-47C5-9EAD-759E13D9B41C' AS MenuId
,'特种作业人员资质已过期'+convert(nvarchar(6),DATEDIFF(day,PersonQuality.LimitDate,getdate()))+'' AS MenuName
,Person.PersonName AS Content
,users.UserId
,users.UserName
,PersonQuality.LimitDate AS DataTime
,CONVERT(varchar(100),PersonQuality.LimitDate, 23) AS DataTimeStr
,'../HSSE/QualityAudit/PersonQualityEdit.aspx?PersonId='+PersonQuality.PersonId AS PCUrl
FROM QualityAudit_PersonQuality AS PersonQuality
LEFT JOIN Sys_User AS users ON users.UserId =@userId
LEFT JOIN SitePerson_Person AS Person on Person.PersonId=PersonQuality.PersonId
WHERE Person.ProjectId=@projectId and Person.IsUsed=1 and Person.InTime<getdate() and (Person.OutTime is null or Person.OutTime >getdate() ) and
PersonQuality.LimitDate<getdate()
UNION ALL
SELECT InspectionPersonId AS DataId
,'8ed133de-5899-4687-878a-20b1f5280f18' AS MenuId
,'人员报验还有'+convert(nvarchar(6),DATEDIFF(day,getdate(),Person.ValidityDate))+'天过期' AS MenuName
,Person.PersonName AS Content
,UserId
,users.UserName
,Person.ValidityDate 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.IsOnSite=1 and
dateadd(day,-15,Person.ValidityDate)<getdate() and getdate()<Person.ValidityDate
UNION ALL
SELECT InspectionPersonId AS DataId
,'8ed133de-5899-4687-878a-20b1f5280f18' AS MenuId
,'人员报验已过期'+convert(nvarchar(6),DATEDIFF(day,Person.ValidityDate,getdate()))+'' AS MenuName
,Person.PersonName AS Content
,UserId
,users.UserName
,Person.ValidityDate 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.IsOnSite=1 and
Person.ValidityDate<getdate()
UNION ALL
SELECT InspectionMachineId AS DataId
,'aa55fad1-6c51-43f5-8c99-3c6aaae79118' AS MenuId
,'机具报验还有'+convert(nvarchar(6),DATEDIFF(day,getdate(),Machine.NextTestDate))+'天过期' AS MenuName
,Machine.InspectionMachineName AS Content
,UserId
,users.UserName
,Machine.NextTestDate 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.IsOnSite=1 and
dateadd(day,-15,Machine.NextTestDate)<getdate() and getdate()<Machine.NextTestDate
UNION ALL
SELECT InspectionMachineId AS DataId
,'aa55fad1-6c51-43f5-8c99-3c6aaae79118' AS MenuId
,'机具报验已过期'+convert(nvarchar(6),DATEDIFF(day,Machine.NextTestDate,getdate()))+'' AS MenuName
,Machine.InspectionMachineName AS Content
,UserId
,users.UserName
,Machine.NextTestDate 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.IsOnSite=1 and
Machine.NextTestDate<getdate()
UNION ALL
SELECT distinct Project.ProjectId AS DataId
,'2AE9D982-A499-497F-8F54-ADDA5856887E' AS MenuId
,'本月工程量完成情况尚未填报' AS MenuName
,'' AS Content
,users.UserId
,users.UserName
,GETDATE() AS DataTime
,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr
,'../JDGL/Check/QuantityCompletion.aspx?ToDo=ToDo' AS PCUrl
FROM Base_Project AS Project
LEFT JOIN Sys_User AS users ON users.UserId =@userId
LEFT JOIN Project_ProjectUser as pu on pu.UserId=@userId
WHERE Project.ProjectId=@projectId
and (pu.RoleId like '%22F78A47-F59C-4FE8-9C43-2DD304CB2108%' or pu.RoleId like '%GCB64EF3-AB0A-40BC-824D-CC314598D5DC%') and ((DATENAME(DAY,GETDATE())>=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))<GETDATE())
)
UNION ALL
SELECT DISTINCT --MonthPlan.MonthPlanId AS DataId
'' AS DataId
,'94287B92-7E96-4B90-BC6F-DAF30AE3B314' AS MenuId
,'进度管理,月度计划尚未完成' AS MenuName
,'' AS Content
,users.UserId
,users.UserName
,GETDATE() AS DataTime
,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr
,'../JDGL/Check/MonthPlanEditNew.aspx?ToDo=ToDo&Months='+CONVERT(varchar(100),Months, 23) AS PCUrl
FROM JDGL_MonthPlan AS MonthPlan
LEFT JOIN Sys_User AS users ON users.UserId =@userId
LEFT JOIN Project_ProjectUser as pu on pu.UserId=@userId
WHERE MonthPlan.ProjectId=@projectId
and MonthPlan.DutyPerson like '%'+@userId+'%' and MonthPlan.RealDate is null and DATENAME(DAY,GETDATE())>=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)<getdate() and PatrolPlan.DutyPerson=@userId
and (select COUNT(*) from Hazard_RoutingInspection ri where ri.PatrolPlanId=PatrolPlan.PatrolPlanId)=0
and HazardListItem.ProjectId=projectUser.ProjectId
UNION ALL
SELECT PersonQuality.PersonId AS DataId
,'EBEA762D-1F46-47C5-9EAD-759E13D9B41C' AS MenuId
,'特种作业人员资质还有'+convert(nvarchar(6),DATEDIFF(day,getdate(),PersonQuality.LimitDate))+'天过期' AS MenuName
,project.ProjectCode
,Person.PersonName AS Content
,users.UserId
,users.UserName
,PersonQuality.LimitDate AS DataTime
,CONVERT(varchar(100),PersonQuality.LimitDate, 23) AS DataTimeStr
,'HSSE/QualityAudit/PersonQualityEdit.aspx?PersonId='+PersonQuality.PersonId AS PCUrl
FROM QualityAudit_PersonQuality AS PersonQuality
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 SitePerson_Person AS Person on Person.PersonId=PersonQuality.PersonId
WHERE Person.IsUsed=1 and Person.InTime<getdate() and (Person.OutTime is null or Person.OutTime >getdate() ) and
dateadd(day,-15,PersonQuality.LimitDate)<getdate() and getdate()<PersonQuality.LimitDate
and (@sType='1' or @sType='3') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and
Person.ProjectId = project.ProjectId
UNION ALL
SELECT PersonQuality.PersonId AS DataId
,'EBEA762D-1F46-47C5-9EAD-759E13D9B41C' AS MenuId
,'特种作业人员资质已过期'+convert(nvarchar(6),DATEDIFF(day,PersonQuality.LimitDate,getdate()))+'' AS MenuName
,project.ProjectCode
,Person.PersonName AS Content
,users.UserId
,users.UserName
,PersonQuality.LimitDate AS DataTime
,CONVERT(varchar(100),PersonQuality.LimitDate, 23) AS DataTimeStr
,'HSSE/QualityAudit/PersonQualityEdit.aspx?PersonId='+PersonQuality.PersonId AS PCUrl
FROM QualityAudit_PersonQuality AS PersonQuality
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 SitePerson_Person AS Person on Person.PersonId=PersonQuality.PersonId
WHERE Person.IsUsed=1 and Person.InTime<getdate() and (Person.OutTime is null or Person.OutTime >getdate() ) and
PersonQuality.LimitDate<getdate() and (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and
Person.ProjectId =projectUser.ProjectId
UNION ALL
SELECT InspectionPersonId AS DataId
,'8ed133de-5899-4687-878a-20b1f5280f18' AS MenuId
,'人员报验还有'+convert(nvarchar(6),DATEDIFF(day,getdate(),Person.ValidityDate))+'天过期 ' AS MenuName
,project.ProjectCode
,Person.PersonName AS Content
,users.UserId
,users.UserName
,Person.ValidityDate AS DataTime
,CONVERT(varchar(100),Person.CompileDate, 23) AS DataTimeStr
,'CQMS/Comprehensive/InspectionPersonEdit.aspx?projectId='+project.ProjectId+'&InspectionPersonId='+Person.InspectionPersonId AS PCUrl
FROM Comprehensive_InspectionPerson AS Person
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 Person.IsOnSite=1 and (@sType='1' or @sType='3') and
dateadd(day,-15,Person.ValidityDate)<getdate() and getdate()<Person.ValidityDate and
Person.ProjectId = projectUser.ProjectId
and project.ProjectState='1'
UNION ALL
SELECT InspectionPersonId AS DataId
,'8ed133de-5899-4687-878a-20b1f5280f18' AS MenuId
,'人员报验已过期'+convert(nvarchar(6),DATEDIFF(day,Person.ValidityDate,getdate()))+'' AS MenuName
,project.ProjectCode
,Person.PersonName AS Content
,users.UserId
,users.UserName
,Person.ValidityDate AS DataTime
,CONVERT(varchar(100),Person.CompileDate, 23) AS DataTimeStr
,'CQMS/Comprehensive/InspectionPersonEdit.aspx?projectId='+project.ProjectId+'&InspectionPersonId='+Person.InspectionPersonId AS PCUrl
FROM Comprehensive_InspectionPerson AS Person
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 Person.IsOnSite=1 and (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and
Person.ValidityDate<getdate() and
Person.ProjectId = projectUser.ProjectId
and project.ProjectState='1'
UNION ALL
SELECT InspectionMachineId AS DataId
,'aa55fad1-6c51-43f5-8c99-3c6aaae79118' AS MenuId
,'机具报验还有'+convert(nvarchar(6),DATEDIFF(day,getdate(),Machine.NextTestDate))+'天过期 ' AS MenuName
,project.ProjectCode
,Machine.InspectionMachineName AS Content
,users.UserId
,users.UserName
,Machine.NextTestDate AS DataTime
,CONVERT(varchar(100),Machine.CompileDate, 23) AS DataTimeStr
,'CQMS/Comprehensive/InspectionMachineEdit.aspx?projectId='+project.ProjectId+'&InspectionMachineId='+Machine.InspectionMachineId AS PCUrl
FROM Comprehensive_InspectionMachine AS Machine
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 Machine.IsOnSite=1 and (@sType='1' or @sType='3') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and
dateadd(day,-15,Machine.NextTestDate)<getdate() and getdate()<Machine.NextTestDate and
Machine.ProjectId = projectUser.ProjectId
and project.ProjectState='1'
UNION ALL
SELECT InspectionMachineId AS DataId
,'aa55fad1-6c51-43f5-8c99-3c6aaae79118' AS MenuId
,'机具报验已过期'+convert(nvarchar(6),DATEDIFF(day,Machine.NextTestDate,getdate()))+'' AS MenuName
,project.ProjectCode
,Machine.InspectionMachineName AS Content
,users.UserId
,users.UserName
,Machine.NextTestDate AS DataTime
,CONVERT(varchar(100),Machine.CompileDate, 23) AS DataTimeStr
,'CQMS/Comprehensive/InspectionMachineEdit.aspx?projectId='+project.ProjectId+'&InspectionMachineId='+Machine.InspectionMachineId AS PCUrl
FROM Comprehensive_InspectionMachine AS Machine
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 Machine.IsOnSite=1 and Machine.ProjectId=projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and
Machine.NextTestDate<getdate() and (@sType='1' or @sType='2')
and project.ProjectState='1'
UNION ALL
SELECT distinct Project.ProjectId AS DataId
,'2AE9D982-A499-497F-8F54-ADDA5856887E' AS MenuId
,'本月工程量完成情况尚未填报' AS MenuName
,project.ProjectCode
,'' AS Content
,users.UserId
,users.UserName
,GETDATE() AS DataTime
,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr
,'JDGL/Check/QuantityCompletion.aspx?ToDo=ToDo' AS PCUrl
FROM Base_Project AS Project
LEFT JOIN Project_ProjectUser as pu on pu.UserId=@userId
LEFT JOIN Sys_User AS users ON users.UserId = pu.UserId
WHERE (project.ProjectState = '1' OR project.ProjectState IS NULL) and (pu.RoleId like '%22F78A47-F59C-4FE8-9C43-2DD304CB2108%' or pu.RoleId like '%GCB64EF3-AB0A-40BC-824D-CC314598D5DC%') and ((DATENAME(DAY,GETDATE())>=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))<GETDATE())
)
UNION ALL
SELECT DISTINCT --MonthPlan.MonthPlanId AS DataId
'' AS DataId
,'94287B92-7E96-4B90-BC6F-DAF30AE3B314' AS MenuId
,'进度管理,月度计划尚未完成' AS MenuName
,project.ProjectCode
,'' AS Content
,users.UserId
,users.UserName
,GETDATE() AS DataTime
,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr
,'JDGL/Check/MonthPlanEditNew.aspx?Months='+CONVERT(varchar(100),Months, 23) AS PCUrl
FROM JDGL_MonthPlan AS MonthPlan
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 MonthPlan.ProjectId=pu.ProjectId
and MonthPlan.DutyPerson like '%'+@userId+'%' and MonthPlan.RealDate is null and DATENAME(DAY,GETDATE())>=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

View File

@ -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

View File

@ -610,6 +610,7 @@
<Compile Include="JDGL\Check\WeekItemService.cs" />
<Compile Include="JDGL\Check\WeekPlanService.cs" />
<Compile Include="JDGL\SGManPower\ManPowerPlanService.cs" />
<Compile Include="JDGL\SGManPower\SGManPowerService.cs" />
<Compile Include="JDGL\WBSCompleteAndReal\WBSReportService.cs" />
<Compile Include="JDGL\WBS\CnProfessionInitService.cs" />
<Compile Include="JDGL\WBS\CnProfessionService.cs" />

View File

@ -0,0 +1,491 @@
using System;
using System.Collections.Generic;
using System.Linq;
using Model;
using System.Data;
namespace BLL
{
public class SGManPowerService
{
/// <summary>
/// 检查并发送人力资源预警
/// </summary>
public static Model.ResponeData CheckAndSendPersonWarning()
{
var responeData = new Model.ResponeData();
// 合并两个集合
var allItems = new List<ToDoItem>();
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;
}
/// <summary>
/// 检查管理人员到期未到岗情况(超过一周发出预警)
/// </summary>
/// <param name="projectId">项目ID</param>
private static IEnumerable<ToDoItem> 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<ToDoItem>();
//循环检查实际考勤中的人数
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<System.Data.SqlClient.SqlParameter>
{
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<DataRow> 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();
}
/// <summary>
/// 发送管理人员预警
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitId">单位id</param>
private static List<ToDoItem> SendManagerWarning(string unitId, string projectId, string unitWorkId, DateTime? planDate, int? quantity, int num)
{
// 发送预警信息
var toDoItems = new List<ToDoItem>();
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<string> toUserIds = new List<string>();
// 施工单位人员推送至施工单位项目经理和总包单位施工经理
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;
}
// /// <summary>
// /// 检查作业人员人力偏差情况一周内累计偏差值超过计划的10%
// /// </summary>
// /// <param name="projectId">项目ID</param>
private static IEnumerable<ToDoItem> 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<ToDoItem>();
//循环检查实际考勤中的人数
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<System.Data.SqlClient.SqlParameter>
{
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<DataRow> 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();
}
/// <summary>
/// 发送作业人员偏差预警
/// </summary>
/// <param name="projectId">项目ID</param>
/// <param name="unitId">单位ID</param>
/// <param name="planTotal">计划总人数</param>
/// <param name="actualTotal">实际总人数</param>
/// <param name="deviationPercentage">偏差百分比</param>
private static List<ToDoItem> SendWorkerDeviationWarning(string unitId, string projectId, string unitWorkId, int? quantity, int num)
{
// 发送预警信息
var toDoItems = new List<ToDoItem>();
List<string> toUserIds = new List<string>();
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;
}
}
}

View File

@ -684,6 +684,12 @@ namespace BLL
Funs.FineUIPleaseSelect(dropName);
}
}
/// <summary>
/// 获取所有单位名称下拉选择项
/// </summary>
/// <param name="dropName"></param>
/// <param name="isShowPlease"></param>
public static void InitAllUnitDownList(FineUIPro.DropDownList dropName, bool isShowPlease)
{
dropName.DataValueField = "UnitId";

View File

@ -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

View File

@ -82,6 +82,9 @@
</f:TemplateField>
<f:RenderField ColumnID="ReceiveMan" DataField="ReceiveMan" FieldType="String" HeaderText="接收人" TextAlign="Center"
HeaderTextAlign="Center" Width="120px">
</f:RenderField>
<f:RenderField ColumnID="RemarkCode" DataField="RemarkCode" SortField="RemarkCode" FieldType="String" HeaderText="标志编号" TextAlign="Center"
HeaderTextAlign="Center" Width="120px">
</f:RenderField>
<%--<f:TemplateField ColumnID="Status" Width="120px" HeaderText="状态" HeaderTextAlign="Center" TextAlign="Center">
<ItemTemplate>

View File

@ -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

View File

@ -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"];

View File

@ -1920,6 +1920,7 @@
<Content Include="SHIYE\InformationProject\SafetyBriefingEdit.aspx" />
<Content Include="SysManage\HttpLog.aspx" />
<Content Include="SysManage\ProjectToDo.aspx" />
<Content Include="SysManage\UnitCleanupMerge.aspx" />
<Content Include="TaskScheduling\InterFace\IFLogList.aspx" />
<Content Include="TaskScheduling\InterFace\InterFaceEdit.aspx" />
<Content Include="TaskScheduling\InterFace\InterFaceSet.aspx" />
@ -2207,6 +2208,11 @@
<Content Include="WorkBench.aspx" />
<Content Include="Work\ToDoList.aspx" />
<Content Include="ZHDD\ZHDD.aspx" />
<Content Include="ZHGL\CQMSData\CQMSBasicData.aspx" />
<Content Include="ZHGL\CQMSData\CQMSCheckData.aspx" />
<Content Include="ZHGL\CQMSData\CQMSEquipAndMachineData.aspx" />
<Content Include="ZHGL\CQMSData\CQMSNoticeDetailsData.aspx" />
<Content Include="ZHGL\CQMSData\WeldingData.aspx" />
<Content Include="ZHGL\DataIn\AccidentCauseReportBar.aspx" />
<Content Include="ZHGL\DataIn\AccidentCauseReportBarIn.aspx" />
<Content Include="ZHGL\DataIn\AccidentCauseReportImport.aspx" />
@ -16650,6 +16656,13 @@
<Compile Include="SysManage\Unit.aspx.designer.cs">
<DependentUpon>Unit.aspx</DependentUpon>
</Compile>
<Compile Include="SysManage\UnitCleanupMerge.aspx.cs">
<DependentUpon>UnitCleanupMerge.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="SysManage\UnitCleanupMerge.aspx.designer.cs">
<DependentUpon>UnitCleanupMerge.aspx</DependentUpon>
</Compile>
<Compile Include="SysManage\UnitEdit.aspx.cs">
<DependentUpon>UnitEdit.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@ -18792,6 +18805,41 @@
<Compile Include="ZHDD\ZHDD.aspx.designer.cs">
<DependentUpon>ZHDD.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSBasicData.aspx.cs">
<DependentUpon>CQMSBasicData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSBasicData.aspx.designer.cs">
<DependentUpon>CQMSBasicData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSCheckData.aspx.cs">
<DependentUpon>CQMSCheckData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSCheckData.aspx.designer.cs">
<DependentUpon>CQMSCheckData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSEquipAndMachineData.aspx.cs">
<DependentUpon>CQMSEquipAndMachineData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSEquipAndMachineData.aspx.designer.cs">
<DependentUpon>CQMSEquipAndMachineData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSNoticeDetailsData.aspx.cs">
<DependentUpon>CQMSNoticeDetailsData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\CQMSNoticeDetailsData.aspx.designer.cs">
<DependentUpon>CQMSNoticeDetailsData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\CQMSData\WeldingData.aspx.cs">
<DependentUpon>WeldingData.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
</Compile>
<Compile Include="ZHGL\CQMSData\WeldingData.aspx.designer.cs">
<DependentUpon>WeldingData.aspx</DependentUpon>
</Compile>
<Compile Include="ZHGL\DataIn\AccidentCauseReportBar.aspx.cs">
<DependentUpon>AccidentCauseReportBar.aspx</DependentUpon>
<SubType>ASPXCodeBehind</SubType>
@ -20131,7 +20179,7 @@
</FlavorProperties>
</VisualStudio>
</ProjectExtensions>
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v15.0\WebApplications\Microsoft.WebApplication.targets" />
<Import Project="$(MSBuildExtensionsPath32)\Microsoft\VisualStudio\v17.0\WebApplications\Microsoft.WebApplication.targets" />
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
Other similar extension points exist, see Microsoft.Common.targets.
<Target Name="BeforeBuild">

View File

@ -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<SqlParameter>
{
@ -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<DataRow> 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);
}

View File

@ -46,6 +46,7 @@
<f:Toolbar ID="Toolbar4" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:DropDownList runat="server" ID="drpUnitWork" Label="装置"></f:DropDownList>
<f:DropDownList runat="server" ID="drpWorkPost" Label="岗位"></f:DropDownList>
<f:ToolbarFill runat="server"/>
<f:Button ID="btnQuery" ToolTip="查询" Text="查询" Icon="SystemSearch" runat="server" EnablePostBack="true"

View File

@ -39,13 +39,15 @@ namespace FineUIPro.Web.JDGL.SGManPower
// 添加隐藏列来存储额外的ID信息
GridTable.Columns.Add("UnitId");
GridTable.Columns.Add("UnitWorkId");
GridTable.Columns.Add("WorkPostId");
ListItem[] list = new ListItem[4];
ListItem[] list = new ListItem[5];
list[0] = new ListItem("序号", "SerialNumber");
list[1] = new ListItem("单位", "UnitName");
list[2] = new ListItem("岗位", "WorkPostName");
list[3] = new ListItem("累计", "TotalCount");
list[2] = new ListItem("装置", "UnitWorkName");
list[3] = new ListItem("岗位", "WorkPostName");
list[4] = new ListItem("累计", "TotalCount");
foreach (var item in list)
{
@ -137,7 +139,7 @@ namespace FineUIPro.Web.JDGL.SGManPower
// 设置Grid的PageSize与下拉框默认值一致
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
WorkPostService.InitWorkPostDropDownList(this.drpWorkPost, true); //岗位
UnitWorkService.InitUnitWorkDownList(drpUnitWork, this.CurrUser.LoginProjectId, true); //单位工程(装置)
// 绑定表格
this.BindGrid();
}
@ -158,14 +160,16 @@ namespace FineUIPro.Web.JDGL.SGManPower
{
GridTable.Columns.Add("Id");
GridTable.Columns.Add("UnitId");
GridTable.Columns.Add("UnitWorkId");
GridTable.Columns.Add("WorkPostId");
// 添加动态日期列这部分已经在InitGrid中定义了
ListItem[] list = new ListItem[4];
ListItem[] list = new ListItem[5];
list[0] = new ListItem("序号", "SerialNumber");
list[1] = new ListItem("单位", "UnitName");
list[2] = new ListItem("岗位", "WorkPostName");
list[3] = new ListItem("累计", "TotalCount");
list[2] = new ListItem("装置", "UnitWorkName");
list[3] = new ListItem("岗位", "WorkPostName");
list[4] = new ListItem("累计", "TotalCount");
foreach (var item in list)
{
GridTable.Columns.Add(item.Value);
@ -180,12 +184,13 @@ namespace FineUIPro.Web.JDGL.SGManPower
}
// 使用原生SQL查询来提高性能直接在数据库层面进行分组统计
string strSql = @"
SELECT UnitId, PostId, RecordDate, COUNT(1) as RecordCount
FROM T_d_EmployInOutRecord
WHERE ProjectId = @ProjectId
AND RecordDate >= @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<System.Data.SqlClient.SqlParameter>
{
@ -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<dynamic>();
var groupedDict = new Dictionary<string, dynamic>();
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<DateTime, int>();
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<string, string>();
var workPosts = new Dictionary<string, string>();
var unitWorks = new Dictionary<string, string>();
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
{

View File

@ -68,6 +68,15 @@ namespace FineUIPro.Web.JDGL.SGManPower
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar4;
/// <summary>
/// drpUnitWork 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpUnitWork;
/// <summary>
/// drpWorkPost 控件。
/// </summary>

View File

@ -405,6 +405,7 @@ namespace FineUIPro.Web.PZHGL.GJSX
txtUserID.Enabled = isStart;
Date_CreateDate.Enabled = isStart;
DropQuestionTypeID.Enabled = isStart;
rblNotice.Enabled = isStart;
DropGJSXTypeID.Enabled = isStart;
DropUser_Acceptance.Enabled = isStart;
Date_CompleteDate.Enabled = isStart;
@ -996,7 +997,7 @@ namespace FineUIPro.Web.PZHGL.GJSX
string sortField = Grid4.SortField;
string sortDirection = Grid4.SortDirection;
var userList = (from x in Funs.DB.Sys_User
/* var userList = (from x in Funs.DB.Sys_User
join y in Funs.DB.Project_ProjectUnit
on x.UnitId equals y.UnitId
join p in Funs.DB.Project_ProjectUser
@ -1004,9 +1005,14 @@ namespace FineUIPro.Web.PZHGL.GJSX
where p.ProjectId == CurrUser.LoginProjectId &&
y.ProjectId == CurrUser.LoginProjectId
orderby x.UserCode
select x);
select x);*/
var userList = (from x in Funs.DB.Project_ProjectUser
join y in Funs.DB.Sys_User on x.UserId equals y.UserId
where x.ProjectId == CurrUser.LoginProjectId
orderby y.UserCode
select y);
DataTable table2 = LINQToDataTable(userList);
if (table2 == null|| table2.Rows.Count==0) return table2;
DataView view2 = table2.DefaultView;
view2.Sort = String.Format("{0} {1}", sortField, sortDirection);

View File

@ -30,12 +30,14 @@
<Items>
<f:TextBox runat="server" Label="单位名称" ID="txtUnitName" EmptyText="输入查询条件"
AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Width="250px" LabelWidth="80px"></f:TextBox>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
<f:ToolbarFill ID="ToolbarFill1" runat="server"></f:ToolbarFill>
<f:Button ID="btnNew" ToolTip="新增" Icon="Add" EnablePostBack="false" runat="server" Hidden="true">
</f:Button>
</f:Button>
<f:Button ID="btnImport" ToolTip="导入" Icon="ApplicationGet" Hidden="true" runat="server"
OnClick="btnImport_Click">
</f:Button>
</f:Button>
<f:Button ID="btnDataBase" ToolTip="数据清理" Icon="DatabaseWrench" runat="server" Hidden="true" OnClick="btnDataBase_Click">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>

View File

@ -10,9 +10,9 @@ namespace FineUIPro.Web.SysManage
public partial class Unit : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
{
if (!IsPostBack)
{
{
////权限按钮方法
this.GetButtonPower();
this.btnNew.OnClientClick = Window1.GetShowReference("UnitEdit.aspx") + "return false;";
@ -20,14 +20,14 @@ namespace FineUIPro.Web.SysManage
if (this.CurrUser != null && this.CurrUser.PageSize.HasValue)
{
Grid1.PageSize = this.CurrUser.PageSize.Value;
}
}
this.ddlPageSize.SelectedValue = Grid1.PageSize.ToString();
// 绑定表格
this.BindGrid();
}
}
/// <summary>
/// <summary>
/// 绑定数据
/// </summary>
private void BindGrid()
@ -37,7 +37,7 @@ namespace FineUIPro.Web.SysManage
+ @" LEFT JOIN Base_UnitType AS UnitType ON UnitType.UnitTypeId=Unit.UnitTypeId"
+ @" LEFT JOIN Base_Unit AS supUnit ON Unit.SupUnitId=supUnit.UnitId"
+ @" WHERE 1=1";
List<SqlParameter> listStr = new List<SqlParameter>();
List<SqlParameter> listStr = new List<SqlParameter>();
if (!string.IsNullOrEmpty(this.txtUnitName.Text.Trim()))
{
strSql += " AND Unit.UnitName LIKE @UnitName";
@ -80,7 +80,7 @@ namespace FineUIPro.Web.SysManage
this.btnNew.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnModify))
{
{
this.btnMenuEdit.Hidden = false;
}
if (buttonList.Contains(BLL.Const.BtnDelete))
@ -92,9 +92,14 @@ namespace FineUIPro.Web.SysManage
this.btnImport.Hidden = false;
}
}
//if (this.CurrUser.UserId == Const.sysglyId || this.CurrUser.UserId == Const.hfnbdId || this.CurrUser.UserId == Const.fuweiId || this.CurrUser.UserId == Const.shenyinhangId)
//{//系统管理员、合肥诺必达、付伟、申银行
this.btnDataBase.Hidden = false;
//}
}
#endregion
/// <summary>
/// 右键删除事件
/// </summary>
@ -127,7 +132,7 @@ namespace FineUIPro.Web.SysManage
}
else
{
strShowNotify += unit.UnitName +""+ cont;
strShowNotify += unit.UnitName + "" + cont;
}
}
}
@ -174,7 +179,7 @@ namespace FineUIPro.Web.SysManage
{
BindGrid();
}
/// <summary>
/// Grid行双击事件
/// </summary>
@ -208,7 +213,7 @@ namespace FineUIPro.Web.SysManage
if (!this.btnMenuEdit.Hidden) ////双击事件 编辑权限有:编辑页面,无:查看页面 或者状态是完成时查看页面
{
PageContext.RegisterStartupScript(Window1.GetShowReference(String.Format("UnitEdit.aspx?UnitId={0}", Grid1.SelectedRowID, "编辑 - ")));
}
}
else
{
Alert.ShowInTop("您没有权限修改别单位信息!", MessageBoxIcon.Warning);
@ -229,11 +234,11 @@ namespace FineUIPro.Web.SysManage
content += "【本单位】,不能删除!";
}
var getpUnits= from x in Funs.DB.Project_ProjectUnit where x.UnitId == id select x;
var getpUnits = from x in Funs.DB.Project_ProjectUnit where x.UnitId == id select x;
foreach (var item in getpUnits)
{
var getprojectiname = ProjectService.GetProjectNameByProjectId(item.ProjectId);
content += getprojectiname+ "【项目单位】已使用!";
content += getprojectiname + "【项目单位】已使用!";
}
var getSpecialEquipment = from x in Funs.DB.Comprehensive_SpecialEquipment where x.UnitId == id select x;
foreach (var item in getSpecialEquipment)
@ -259,7 +264,7 @@ namespace FineUIPro.Web.SysManage
foreach (var item in getSafetyOrganization)
{
var getprojectiname = ProjectService.GetProjectNameByProjectId(item.ProjectId);
content += getprojectiname + "【安全组织机构】" + item.Names+ "已使用!";
content += getprojectiname + "【安全组织机构】" + item.Names + "已使用!";
}
var getRectifyNotices = from x in Funs.DB.Check_RectifyNotices where x.UnitId == id select x;
foreach (var item in getRectifyNotices)
@ -331,7 +336,8 @@ namespace FineUIPro.Web.SysManage
}
var getMonthReport = from x in Funs.DB.SitePerson_MonthReportDetail
join y in Funs.DB.SitePerson_MonthReport on x.MonthReportId equals y.MonthReportId
where x.UnitId == id select y;
where x.UnitId == id
select y;
foreach (var item in getMonthReport)
{
var getprojectiname = ProjectService.GetProjectNameByProjectId(item.ProjectId);
@ -339,26 +345,27 @@ namespace FineUIPro.Web.SysManage
}
var getCheckDay = from x in Funs.DB.Check_CheckDayDetail
join y in Funs.DB.Check_CheckDay on x.CheckDayId equals y.CheckDayId
where x.UnitId == id select y;
join y in Funs.DB.Check_CheckDay on x.CheckDayId equals y.CheckDayId
where x.UnitId == id
select y;
foreach (var item in getCheckDay)
{
var getprojectiname = ProjectService.GetProjectNameByProjectId(item.ProjectId);
content += getprojectiname + "【日常巡检】" + item.CheckDayCode + "已使用!";
}
var getCheckColligation = from x in Funs.DB.Check_CheckColligationDetail
join y in Funs.DB.Check_CheckColligation on x.CheckColligationId equals y.CheckColligationId
where x.UnitId == id
select y;
join y in Funs.DB.Check_CheckColligation on x.CheckColligationId equals y.CheckColligationId
where x.UnitId == id
select y;
foreach (var item in getCheckColligation)
{
var getprojectiname = ProjectService.GetProjectNameByProjectId(item.ProjectId);
content += getprojectiname + "【综合大检查】" + item.CheckColligationCode + "已使用!";
}
var getCheckSpecial = from x in Funs.DB.Check_CheckSpecialDetail
join y in Funs.DB.Check_CheckSpecial on x.CheckSpecialId equals y.CheckSpecialId
where x.UnitId == id
select y;
join y in Funs.DB.Check_CheckSpecial on x.CheckSpecialId equals y.CheckSpecialId
where x.UnitId == id
select y;
foreach (var item in getCheckSpecial)
{
var getprojectiname = ProjectService.GetProjectNameByProjectId(item.ProjectId);
@ -408,7 +415,7 @@ namespace FineUIPro.Web.SysManage
content += getprojectiname + "【超过一定规模的危大施工方案】" + item.PlanCode + "已使用!";
}
var getUsers = from x in Funs.DB.Sys_User where x.UnitId == id select x;
foreach(var item in getUsers)
foreach (var item in getUsers)
{
content += "【用户信息】" + item.UserName + "已使用!";
}
@ -424,7 +431,7 @@ namespace FineUIPro.Web.SysManage
/// <param name="e"></param>
protected void btnImport_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("UnitIn.aspx","","导入 - ")));
PageContext.RegisterStartupScript(Window2.GetShowReference(String.Format("UnitIn.aspx", "", "导入 - ")));
}
/// <summary>
@ -437,5 +444,19 @@ namespace FineUIPro.Web.SysManage
BindGrid();
}
#endregion
#region
/// <summary>
/// 数据清理
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnDataBase_Click(object sender, EventArgs e)
{
PageContext.RegisterStartupScript(Window2.GetShowReference($"UnitCleanupMerge.aspx", "单位清理合并"));
}
#endregion
}
}

View File

@ -7,11 +7,13 @@
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.SysManage {
public partial class Unit {
namespace FineUIPro.Web.SysManage
{
public partial class Unit
{
/// <summary>
/// form1 控件。
/// </summary>
@ -20,7 +22,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
@ -29,7 +31,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
@ -38,7 +40,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
@ -47,7 +49,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
@ -56,7 +58,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtUnitName 控件。
/// </summary>
@ -65,7 +67,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtUnitName;
/// <summary>
/// ToolbarFill1 控件。
/// </summary>
@ -74,7 +76,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarFill ToolbarFill1;
/// <summary>
/// btnNew 控件。
/// </summary>
@ -83,7 +85,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnNew;
/// <summary>
/// btnImport 控件。
/// </summary>
@ -92,7 +94,16 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnImport;
/// <summary>
/// btnDataBase 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnDataBase;
/// <summary>
/// lblNumber 控件。
/// </summary>
@ -101,7 +112,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
@ -110,7 +121,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
@ -119,7 +130,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
@ -128,7 +139,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
@ -137,7 +148,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
/// <summary>
/// Window2 控件。
/// </summary>
@ -146,7 +157,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window2;
/// <summary>
/// WindowSubUnit 控件。
/// </summary>
@ -155,7 +166,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window WindowSubUnit;
/// <summary>
/// Menu1 控件。
/// </summary>
@ -164,7 +175,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Menu Menu1;
/// <summary>
/// btnMenuEdit 控件。
/// </summary>
@ -173,7 +184,7 @@ namespace FineUIPro.Web.SysManage {
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.MenuButton btnMenuEdit;
/// <summary>
/// btnMenuDelete 控件。
/// </summary>

View File

@ -0,0 +1,95 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="UnitCleanupMerge.aspx.cs" Inherits="FineUIPro.Web.SysManage.UnitCleanupMerge" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>单位清理合并</title>
<link href="../res/css/common.css" rel="stylesheet" type="text/css" />
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="SimpleForm1" runat="server" />
<f:Form ID="SimpleForm1" ShowBorder="false" ShowHeader="false" AutoScroll="true" LabelWidth="140px"
BodyPadding="10px" runat="server" RedStarPosition="BeforeText" LabelAlign="Right">
<Rows>
<f:FormRow>
<Items>
<f:DropDownList ID="drpUnitId" runat="server" Label="合并后单位" EnableEdit="true" ForceSelection="false" Required="true" ShowRedStar="true">
</f:DropDownList>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:DropDownList ID="drpMergeUnitId" runat="server" Label="需要合并的单位" EnableEdit="true" ForceSelection="false" Required="true" ShowRedStar="true">
</f:DropDownList>
</Items>
<%--<Items>
<f:DropDownBox runat="server" ID="drpMergeUnitBox" AutoPostBack="true" OnTextChanged="TextBox_TextChanged" Label="需要合并的单位" EmptyText="请从下拉表格中选择需要合并的单位" DataControlID="Grid2"
EnableMultiSelect="false" MatchFieldWidth="false" Required="true" ShowRedStar="true">
<PopPanel>
<f:Panel ID="Panel1" runat="server" BodyPadding="10px" Width="820px" Height="420px" Hidden="true"
ShowBorder="true" ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Form ID="Form2" ShowBorder="False" ShowHeader="False" runat="server">
<Rows>
<f:FormRow>
<Items>
<f:TwinTriggerBox Width="200px" runat="server" EmptyText="按单位代码、名称查找" ShowLabel="false" ID="ttbPmpProCodeSearch"
ShowTrigger1="false" OnTrigger1Click="ttbPmpProCodeSearch_Trigger1Click" OnTrigger2Click="ttbPmpProCodeSearch_Trigger2Click" Trigger1Icon="Clear" Trigger2Icon="Search">
</f:TwinTriggerBox>
</Items>
</f:FormRow>
</Rows>
</f:Form>
<f:Grid ID="Grid2" BoxFlex="1" DataKeyNames="Name"
DataIDField="Name" DataTextField="Name" EnableMultiSelect="false"
PageSize="50" ShowBorder="true" ShowHeader="false"
AllowPaging="true" IsDatabasePaging="true" OnPageIndexChange="Grid2_PageIndexChange" runat="server" EnableCheckBoxSelect="true"
AllowSorting="false" SortField="StNum" SortDirection="DESC"
OnSort="Grid2_Sort">
<Columns>
<f:TemplateField ColumnID="tfPageIndex" Width="50px" HeaderText="序号" HeaderTextAlign="Center" TextAlign="Center"
EnableLock="true" Locked="true">
<ItemTemplate>
<asp:Label ID="lblPageIndex" runat="server" Text='<%# Grid2.PageIndex * Grid2.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:BoundField Width="80px" DataField="StNum" HeaderText="项目编号" />
<f:BoundField ExpandUnusedSpace="true" MinWidth="200px" DataField="Name" HeaderText="项目名称" />
<f:BoundField ExpandUnusedSpace="true" MinWidth="200px" DataField="Address" HeaderText="地址" />
</Columns>
</f:Grid>
</Items>
</f:Panel>
</PopPanel>
</f:DropDownBox>
</Items>--%>
</f:FormRow>
<f:FormRow>
<Items>
<f:TextArea ID="txtRemark" runat="server" Label="备注说明" Height="120px" EmptyText="100字内">
</f:TextArea>
</Items>
</f:FormRow>
<f:FormRow>
<Items>
<f:Label ID="Label4" runat="server" Text="请谨慎操作,合并后数据无法恢复!!!"></f:Label>
</Items>
</f:FormRow>
</Rows>
<Toolbars>
<f:Toolbar ID="Toolbar1" Position="Bottom" ToolbarAlign="Right" runat="server">
<Items>
<f:Button ID="btnSave" Icon="SystemSave" runat="server" ValidateForms="SimpleForm1" Hidden="true"
OnClick="btnSave_Click" ToolTip="开始清理">
</f:Button>
<f:Button ID="btnClose" EnablePostBack="false" ToolTip="关闭" runat="server" Icon="SystemClose">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
</f:Form>
</form>
</body>
</html>

View File

@ -0,0 +1,69 @@
using System;
using System.Linq;
using System.Web.UI.WebControls;
using BLL;
using NPOI.Util;
namespace FineUIPro.Web.SysManage
{
public partial class UnitCleanupMerge : PageBase
{
protected void Page_Load(object sender, EventArgs e)
{
if (!IsPostBack)
{
this.btnClose.OnClientClick = ActiveWindow.GetHideReference();
////权限按钮方法
this.GetButtonPower();
//
BLL.UnitService.InitAllUnitDownList(this.drpUnitId, false);
BLL.UnitService.InitAllUnitDownList(this.drpMergeUnitId, false);
}
}
/// <summary>
/// 保存按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnSave_Click(object sender, EventArgs e)
{
if (this.drpUnitId.SelectedValue == Const._Null)
{
Alert.ShowInParent("请选择合并后单位!", MessageBoxIcon.Warning);
return;
}
if (this.drpMergeUnitId.SelectedValue == Const._Null)
{
Alert.ShowInParent("需要合并的单位!", MessageBoxIcon.Warning);
return;
}
string unitId = this.drpUnitId.SelectedValue;
string unitMergeId = this.drpMergeUnitId.SelectedValue;
string txtRemark = this.txtRemark.Text.Trim();
//BLL.LogService.AddSys_Log(this.CurrUser, unit.UnitCode, unit.UnitId, BLL.Const.UnitMenuId, Const.BtnAdd);
PageContext.RegisterStartupScript(ActiveWindow.GetHideRefreshReference());
}
#region
/// <summary>
/// 获取按钮权限
/// </summary>
/// <param name="button"></param>
/// <returns></returns>
private void GetButtonPower()
{
if (this.CurrUser.UserId == Const.sysglyId || this.CurrUser.UserId == Const.hfnbdId || this.CurrUser.UserId == Const.fuweiId || this.CurrUser.UserId == Const.shenyinhangId)
{//系统管理员、合肥诺必达、付伟、申银行
this.btnSave.Hidden = false;
}
}
#endregion
}
}

View File

@ -0,0 +1,107 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.SysManage
{
public partial class UnitCleanupMerge
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// SimpleForm1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Form SimpleForm1;
/// <summary>
/// drpUnitId 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpUnitId;
/// <summary>
/// drpMergeUnitId 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList drpMergeUnitId;
/// <summary>
/// txtRemark 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextArea txtRemark;
/// <summary>
/// Label4 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Label Label4;
/// <summary>
/// Toolbar1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar1;
/// <summary>
/// btnSave 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnSave;
/// <summary>
/// btnClose 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnClose;
}
}

View File

@ -0,0 +1,168 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSBasicData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSBasicData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>质量基本信息</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="质量基本信息" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="五环专业工程师" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="160px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="分包商专业工程师" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="一般施工方案审批" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="危大工程审批情况" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="ITP发布情况" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设计交底(次)" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="图纸会审(次)" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设计变更管理" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="现场质量培训" TextAlign="Center">
<Columns>
<f:RenderField Width="110px" ColumnID="Value15" DataField="Value15"
FieldType="String" HeaderText="本月培训次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="Value16" DataField="Value16"
FieldType="String" HeaderText="累计培训次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="Value17" DataField="Value17"
FieldType="String" HeaderText="本月培训人数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="110px" ColumnID="Value18" DataField="Value18"
FieldType="String" HeaderText="累计培训人数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10" />
<f:ListItem Text="15" Value="15" />
<f:ListItem Text="20" Value="20" />
<f:ListItem Text="25" Value="25" />
<f:ListItem Text="所有行" Value="100000" />
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -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
/// <summary>
/// 绑定数据
/// </summary>
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<dynamic>();
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
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("质量基本信息表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
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("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
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("<td>{0}</td>", 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("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSBasicData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,156 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSCheckData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSCheckData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>现场质量检查</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server"/>
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="现场质量检查" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="现场共检点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="共检合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="共检一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="计量器具管理(台套)" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="质量专项检查" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月检查次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计检查次数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="NCR管理" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12"
FieldType="String" HeaderText="NCR总数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13"
FieldType="String" HeaderText="本月已整改" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14"
FieldType="String" HeaderText="累计已整改" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value15" DataField="Value15"
FieldType="String" HeaderText="累计完成比例" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10"/>
<f:ListItem Text="15" Value="15"/>
<f:ListItem Text="20" Value="20"/>
<f:ListItem Text="25" Value="25"/>
<f:ListItem Text="所有行" Value="100000"/>
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -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
/// <summary>
/// 绑定数据
/// </summary>
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<dynamic>();
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<Model.View_MonthReport_InspectionManagement> totalManagementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, "", Convert.ToDateTime("2015-01-01"), DateTime.Now, false);
//当期集合
List<Model.View_MonthReport_InspectionManagement> 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
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("现场质量检查表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
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("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
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("<td>{0}</td>", 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("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSCheckData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,134 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSEquipAndMachineData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSEquipAndMachineData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>设备材料计量器具质量文件上报</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server"/>
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="设备材料计量器具质量文件上报" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="设备材料报验" TextAlign="Center">
<Columns>
<f:RenderField Width="140px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月报验批次" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="140px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="本月合格批次" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计报验批次" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="累计合格批次" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计验收合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="计量器具管理(台套)" TextAlign="Center">
<Columns>
<f:RenderField Width="120px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计报验" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="质量文件管理(数量)" TextAlign="Center">
<Columns>
<f:RenderField Width="120px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月上报" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计上报" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="120px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="累计未返回" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10"/>
<f:ListItem Text="15" Value="15"/>
<f:ListItem Text="20" Value="20"/>
<f:ListItem Text="25" Value="25"/>
<f:ListItem Text="所有行" Value="100000"/>
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -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
/// <summary>
/// 绑定数据
/// </summary>
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<dynamic>();
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
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("设备材料计量器具质量文件上报表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
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("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
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("<td>{0}</td>", 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("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSEquipAndMachineData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,262 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="CQMSNoticeDetailsData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.CQMSNoticeDetailsData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>共检点明细</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server"/>
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="共检点明细" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="土建" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设备" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="电气" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value15" DataField="Value15" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value16" DataField="Value16" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value17" DataField="Value17" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value18" DataField="Value18" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="仪表" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value19" DataField="Value19" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value20" DataField="Value20" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value21" DataField="Value21" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value22" DataField="Value22" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value23" DataField="Value23" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value24" DataField="Value24" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="防腐" TextAlign="Center">
<Columns>
<f:GroupField HeaderText="检查点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value25" DataField="Value25" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value26" DataField="Value26" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="合格点" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value27" DataField="Value27" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value28" DataField="Value28" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="一次合格率" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value29" DataField="Value29" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value30" DataField="Value30" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10"/>
<f:ListItem Text="15" Value="15"/>
<f:ListItem Text="20" Value="20"/>
<f:ListItem Text="25" Value="25"/>
<f:ListItem Text="所有行" Value="100000"/>
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -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
/// <summary>
/// 绑定数据
/// </summary>
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<dynamic>();
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<Model.View_MonthReport_InspectionManagement> totalManagementList = BLL.InspectionManagementService.getViewMonthReportInspectionManagementByCNProfessionalIdAndDate(project.ProjectId, null, Convert.ToDateTime("2015-01-01"), DateTime.Now, false);
//专业下当期集合
List<Model.View_MonthReport_InspectionManagement> 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
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("共检点明细表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 收集所有列信息,包括嵌套的列
List<GridColumn> flattenedColumns = new List<GridColumn>();
List<int> columnLevels = new List<int>();
int maxLevel = GetFlattenedColumns(grid.Columns, flattenedColumns, columnLevels, 0);
// 生成表头
for (int level = 0; level <= maxLevel; level++)
{
sb.Append("<tr>");
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("<td rowspan=\"{0}\" align=\"center\">{1}</td>", rowspan, cellValue);
}
else
{
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", colspan, cellValue);
}
// 跳过已处理的子列
if (colspan > 1)
{
i += colspan;
}
else
{
i++;
}
}
else if (columnLevel < level && !(column is GroupField))
{
// 已经由rowspan处理的单元格跳过
i++;
}
else
{
i++;
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
List<GridColumn> 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("<td>{0}</td>", html);
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
List<GridColumn> 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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
// 获取扁平化的列结构和对应的层级
private int GetFlattenedColumns(GridColumnCollection columns, List<GridColumn> flattenedColumns, List<int> 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<GridColumn> GetLeafColumns(GridColumnCollection columns)
{
List<GridColumn> leafColumns = new List<GridColumn>();
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();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class CQMSNoticeDetailsData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -0,0 +1,154 @@
<%@ Page Language="C#" AutoEventWireup="true" CodeBehind="WeldingData.aspx.cs" Inherits="FineUIPro.Web.ZHGL.CQMSData.WeldingData" %>
<!DOCTYPE html>
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8"/>
<title>焊接管理</title>
<style>
/* 增强合计行样式 - 使用多种选择器确保生效 */
.f-grid-row-summary .f-grid-cell,
.f-grid-summary-row .f-grid-cell-inner {
font-weight: bold !important;
color: red !important;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<f:PageManager ID="PageManager1" AutoSizePanelID="Panel1" runat="server" />
<f:Panel ID="Panel1" runat="server" Margin="5px" BodyPadding="5px" ShowBorder="false" AutoScroll="true"
ShowHeader="false" Layout="VBox" BoxConfigAlign="Stretch">
<Items>
<f:Grid ID="Grid1" ShowBorder="true" ShowHeader="false" Title="焊接管理" EnableCollapse="true"
runat="server" BoxFlex="1" DataKeyNames="ProjectId" DataIDField="ProjectId" AllowSorting="true" SortField="SortIndex"
SortDirection="ASC" OnSort="Grid1_Sort" EnableColumnLines="true" AllowColumnLocking="true" EnableSummary="true" SummaryPosition="Flow"
AllowPaging="true" IsDatabasePaging="true" PageSize="10" OnPageIndexChange="Grid1_PageIndexChange">
<Toolbars>
<f:Toolbar ID="Toolbar2" Position="Top" runat="server" ToolbarAlign="Right">
<Items>
<f:TextBox ID="txtProjectName" runat="server" Label="项目名称" LabelAlign="left" LabelWidth="80px" EmptyText="输入查询条件" AutoPostBack="true" OnTextChanged="btSearch_Click"></f:TextBox>
<f:ToolbarFill runat="server"></f:ToolbarFill>
<f:Button ID="btnOut" OnClick="btnOut_Click" runat="server" Text="导出" ToolTip="导出" Icon="FolderUp"
EnableAjax="false" DisableControlBeforePostBack="false">
</f:Button>
</Items>
</f:Toolbar>
</Toolbars>
<Columns>
<f:TemplateField ColumnID="tfNumber" Width="50px" HeaderText="序号" HeaderTextAlign="Center" Locked="true"
TextAlign="Center">
<ItemTemplate>
<asp:Label ID="lblNumber" runat="server" Text='<%# Grid1.PageIndex * Grid1.PageSize + Container.DataItemIndex + 1 %>'></asp:Label>
</ItemTemplate>
</f:TemplateField>
<f:RenderField Width="250px" ColumnID="ProjectName" DataField="ProjectName" SortField="ProjectName" Locked="true"
FieldType="String" HeaderText="项目名称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="150px" ColumnID="ShortName" DataField="ShortName" SortField="ShortName" Locked="true"
FieldType="String" HeaderText="项目简称" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:GroupField HeaderText="管道焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value1" DataField="Value1" SortField="Value1"
FieldType="String" HeaderText="本月" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value2" DataField="Value2" SortField="Value2"
FieldType="String" HeaderText="累计" TextAlign="Left" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="钢结构焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value3" DataField="Value3"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value4" DataField="Value4"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="设备焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value5" DataField="Value5"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value6" DataField="Value6"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="其他焊工" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value7" DataField="Value7"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value8" DataField="Value8"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="PQR/WPS报验" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value9" DataField="Value9"
FieldType="String" HeaderText="本月" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value10" DataField="Value10"
FieldType="String" HeaderText="累计" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
<f:GroupField HeaderText="无损检测管理" TextAlign="Center">
<Columns>
<f:RenderField Width="100px" ColumnID="Value11" DataField="Value11"
FieldType="String" HeaderText="本月拍片数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value12" DataField="Value12"
FieldType="String" HeaderText="累计拍片数" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value13" DataField="Value13"
FieldType="String" HeaderText="本月一次合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
<f:RenderField Width="100px" ColumnID="Value14" DataField="Value14"
FieldType="String" HeaderText="累计一次合格率" TextAlign="Center" HeaderTextAlign="Center">
</f:RenderField>
</Columns>
</f:GroupField>
</Columns>
<PageItems>
<f:ToolbarSeparator ID="ToolbarSeparator1" runat="server">
</f:ToolbarSeparator>
<f:ToolbarText ID="ToolbarText1" runat="server" Text="每页记录数:">
</f:ToolbarText>
<f:DropDownList runat="server" ID="ddlPageSize" Width="80px" AutoPostBack="true"
OnSelectedIndexChanged="ddlPageSize_SelectedIndexChanged">
<f:ListItem Text="10" Value="10" />
<f:ListItem Text="15" Value="15" />
<f:ListItem Text="20" Value="20" />
<f:ListItem Text="25" Value="25" />
<f:ListItem Text="所有行" Value="100000" />
</f:DropDownList>
</PageItems>
</f:Grid>
</Items>
</f:Panel>
<f:Window ID="Window1" runat="server" Hidden="true" ShowHeader="true"
IsModal="true" Target="Parent" EnableMaximize="true" EnableResize="true" OnClose="Window1_Close"
Title="编辑Project_CQMSData_CQMS" EnableIFrame="true" Height="650px"
Width="1200px">
</f:Window>
</form>
<script type="text/javascript">
function reloadGrid() {
__doPostBack(null, 'reloadGrid');
}
</script>
</body>
</html>

View File

@ -0,0 +1,441 @@
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
/// <summary>
/// 绑定数据
/// </summary>
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<dynamic>();
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 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
#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
/// <summary>
/// 分页
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_PageIndexChange(object sender, GridPageEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 排序
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Grid1_Sort(object sender, GridSortEventArgs e)
{
this.BindGrid();
}
/// <summary>
/// 分页显示条数下拉框
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void ddlPageSize_SelectedIndexChanged(object sender, EventArgs e)
{
Grid1.PageSize = Convert.ToInt32(ddlPageSize.SelectedValue);
this.BindGrid();
}
#endregion
#region
/// <summary>
/// 关闭弹出窗
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void Window1_Close(object sender, WindowCloseEventArgs e)
{
BindGrid();
}
#endregion
#region
/// 导出按钮
/// </summary>
/// <param name="sender"></param>
/// <param name="e"></param>
protected void btnOut_Click(object sender, EventArgs e)
{
Response.ClearContent();
string filename = Funs.GetNewFileName();
Response.AddHeader("content-disposition",
"attachment; filename=" +
System.Web.HttpUtility.UrlEncode("焊接管理表" + filename, System.Text.Encoding.UTF8) + ".xls");
Response.ContentType = "application/excel";
Response.ContentEncoding = System.Text.Encoding.UTF8;
this.BindGrid();
Response.Write(GetGridTableHtml(Grid1));
Response.End();
}
/// <summary>
/// 导出方法
/// </summary>
/// <param name="grid"></param>
/// <returns></returns>
private string GetGridTableHtml(Grid grid)
{
StringBuilder sb = new StringBuilder();
sb.Append("<meta http-equiv=\"content-type\" content=\"application/excel; charset=UTF-8\"/>");
sb.Append("<table cellspacing=\"0\" rules=\"all\" border=\"1\" style=\"border-collapse:collapse;\">");
// 计算总列数,用于处理表头
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("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 对于分组列使用colspan跨越子列数量文本居中
sb.AppendFormat("<td colspan=\"{0}\" align=\"center\">{1}</td>", groupField.Columns.Count,
groupField.HeaderText);
}
else
{
// 普通列,跨两行,文本居中
sb.AppendFormat("<td rowspan=\"2\" align=\"center\">{0}</td>", column.HeaderText);
}
}
sb.Append("</tr>");
// 第二行表头(仅包含分组列的子列)- 居中显示
bool hasGroupColumns = grid.Columns.Any(c => c is GroupField && ((GroupField)c).Columns != null);
if (hasGroupColumns)
{
sb.Append("<tr>");
foreach (GridColumn column in grid.Columns)
{
if (column is GroupField groupField && groupField.Columns != null)
{
// 添加分组列的子列标题,居中显示
foreach (GridColumn subColumn in groupField.Columns)
{
sb.AppendFormat("<td align=\"center\">{0}</td>", subColumn.HeaderText);
}
}
}
sb.Append("</tr>");
}
// 添加数据行
foreach (GridRow row in grid.Rows)
{
sb.Append("<tr>");
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("<td>{0}</td>", 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("<td>{0}</td>", html);
}
}
sb.Append("</tr>");
}
// 添加合计行
if (grid.SummaryData != null)
{
sb.Append("<tr style=\"font-weight:bold; color:red;\">");
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
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("<td>{0}</td>", grid.SummaryData[dataField]);
}
else if (!string.IsNullOrEmpty(dataField) && dataField == "ProjectName")
{
sb.Append("<td>合计</td>");
}
else
{
sb.Append("<td></td>");
}
}
else
{
sb.Append("<td></td>");
}
}
}
sb.Append("</tr>");
}
sb.Append("</table>");
return sb.ToString();
}
#endregion
protected void btSearch_Click(object sender, EventArgs e)
{
BindGrid();
}
}
}

View File

@ -0,0 +1,125 @@
//------------------------------------------------------------------------------
// <自动生成>
// 此代码由工具生成。
//
// 对此文件的更改可能导致不正确的行为,如果
// 重新生成代码,则所做更改将丢失。
// </自动生成>
//------------------------------------------------------------------------------
namespace FineUIPro.Web.ZHGL.CQMSData
{
public partial class WeldingData
{
/// <summary>
/// form1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.HtmlControls.HtmlForm form1;
/// <summary>
/// PageManager1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.PageManager PageManager1;
/// <summary>
/// Panel1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Panel Panel1;
/// <summary>
/// Grid1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Grid Grid1;
/// <summary>
/// Toolbar2 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Toolbar Toolbar2;
/// <summary>
/// txtProjectName 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.TextBox txtProjectName;
/// <summary>
/// btnOut 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Button btnOut;
/// <summary>
/// lblNumber 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::System.Web.UI.WebControls.Label lblNumber;
/// <summary>
/// ToolbarSeparator1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarSeparator ToolbarSeparator1;
/// <summary>
/// ToolbarText1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.ToolbarText ToolbarText1;
/// <summary>
/// ddlPageSize 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.DropDownList ddlPageSize;
/// <summary>
/// Window1 控件。
/// </summary>
/// <remarks>
/// 自动生成的字段。
/// 若要进行修改,请将字段声明从设计器文件移到代码隐藏文件。
/// </remarks>
protected global::FineUIPro.Window Window1;
}
}

View File

@ -93,4 +93,10 @@
<TreeNode id="F2133BD6-C786-407A-AD6F-3EEF613229A8" Text="施工管理绩效数据" NavigateUrl="ZHGL/Performance/PerformanceAllData.aspx"></TreeNode>
<TreeNode id="53D8CED2-9AA7-43EA-B27D-EA10A06DF713" Text="开车人员绩效管理" NavigateUrl=""><TreeNode id="383290E0-60AE-4D16-8B5E-3899B85EC2ED" Text="开车绩效评分标准" NavigateUrl="ZHGL/TestRunPerformance/TestRunPerformanceStandard.aspx"></TreeNode>
</TreeNode>
<TreeNode id="E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD" Text="现场质量数据" NavigateUrl=""><TreeNode id="51EA8258-C81D-4C33-B939-769450979D14" Text="质量基本信息" NavigateUrl="ZHGL/CQMSData/CQMSBasicData.aspx"></TreeNode>
<TreeNode id="6E1F4EF5-47CA-4DF8-B561-3C98DBD88EA2" Text="焊接管理" NavigateUrl="ZHGL/CQMSData/WeldingData.aspx"></TreeNode>
<TreeNode id="C9076E93-29DB-419C-8902-789163C6554A" Text="现场质量检查" NavigateUrl="ZHGL/CQMSData/CQMSCheckData.aspx"></TreeNode>
<TreeNode id="64FED633-2436-426B-A230-7C0038E44AD4" Text="设备材料计量器具质量文件上报" NavigateUrl="ZHGL/CQMSData/CQMSEquipAndMachineData.aspx"></TreeNode>
<TreeNode id="12E7E1FD-6D8D-41D8-801C-E15B68805213" Text="共检点明细" NavigateUrl="ZHGL/CQMSData/CQMSNoticeDetailsData.aspx"></TreeNode>
</TreeNode>
</Tree>

View File

@ -1642,7 +1642,24 @@ left join (select PlanNum,RealNum,QuantityListId from JDGL_QuantityCompletion wh
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 )
ORDER BY DataTime DESC ";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@userId", CurrUser.UserId));
@ -1707,7 +1724,24 @@ left join (select PlanNum,RealNum,QuantityListId from JDGL_QuantityCompletion wh
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 )
ORDER BY DataTime DESC ";
List<SqlParameter> listStr = new List<SqlParameter>();
listStr.Add(new SqlParameter("@userId", CurrUser.UserId));

View File

@ -0,0 +1,31 @@
using System;
using System.Web.Http;
using BLL;
namespace WebAPI.Controllers.JDGL
{
public class SGManPowerController : ApiController
{
/// <summary>
/// 人力预警
/// </summary>
/// <returns></returns>
[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;
}
}
}

View File

@ -168,6 +168,7 @@
<Compile Include="Controllers\HSSE\TestingController.cs" />
<Compile Include="Controllers\HSSE\TowerCraneController.cs" />
<Compile Include="Controllers\IDP\IDPController.cs" />
<Compile Include="Controllers\JDGL\SGManPowerController.cs" />
<Compile Include="Controllers\JGZL\JGZLController.cs" />
<Compile Include="Controllers\Person\PersonCheckController.cs" />
<Compile Include="Controllers\CQMS\CheckEquipmentController.cs" />