This commit is contained in:
commit
8d634b6606
|
|
@ -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
|
||||
|
||||
|
||||
|
|
@ -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
|
||||
|
|
@ -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" />
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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";
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
|
|
|
|||
|
|
@ -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"];
|
||||
|
|
|
|||
|
|
@ -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">
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
}
|
||||
|
|
|
|||
|
|
@ -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"
|
||||
|
|
|
|||
|
|
@ -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
|
||||
{
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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);
|
||||
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
|
|||
|
|
@ -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>
|
||||
|
|
@ -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
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
@ -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;
|
||||
}
|
||||
}
|
||||
|
|
@ -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>
|
||||
|
|
@ -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));
|
||||
|
|
|
|||
|
|
@ -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;
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
|
@ -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" />
|
||||
|
|
|
|||
Loading…
Reference in New Issue