diff --git a/DataBase/版本日志/SGGLDB_V2025-08-27-xiaj(关键事项申请关闭后待办).sql b/DataBase/版本日志/SGGLDB_V2025-08-27-xiaj(关键事项申请关闭后待办).sql new file mode 100644 index 00000000..3b5e5567 --- /dev/null +++ b/DataBase/版本日志/SGGLDB_V2025-08-27-xiaj(关键事项申请关闭后待办).sql @@ -0,0 +1,756 @@ + + + +--ȡǰ˴ +ALTER PROCEDURE [dbo].[Sp_Project_GetToDoItems] + @projectId NVARCHAR(50)=NULL, + @userId NVARCHAR(200)=NULL +AS +/*ȡǰ˴*/ +BEGIN +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲ' AS MenuName + ,(case when len(register.RegisterDef)>15 then left(register.RegisterDef,15)+'...' else register.RegisterDef end)AS Content + ,UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'../HSSE/HiddenInspection/HiddenRectificationRectify.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE register.ProjectId=@projectId AND +((register.states = '1' AND (register.ResponsibleMan =@userId OR register.CCManIds LIKE ('%'+@userId+'%') )) +) +UNION ALL + +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲȷ' AS MenuName + ,(case when len(register.RegisterDef)>15 then left(register.RegisterDef,15)+'...' else register.RegisterDef end) AS Content + ,UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'../HSSE/HiddenInspection/HiddenRectificationConfirm.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE register.ProjectId=@projectId AND +register.states = '2' AND register.CheckManId =@userId + +UNION ALL +SELECT CheckControlCode AS DataId + ,'B3E99BD9-FDC7-4F15-8C3C-A7821AC9E306' AS MenuId + ,'Ѳ' AS MenuName + ,checkControl.QuestionDef AS Content + ,UserId + ,users.UserName + ,checkControl.CheckDate AS DataTime + ,CONVERT(varchar(100),checkControl.CheckDate, 23) AS DataTimeStr + ,'../CQMS/Check/ChecklistEdit.aspx?ToDo=ToDo&CheckControlCode='+checkControl.CheckControlCode AS PCUrl +FROM Check_CheckControl AS checkControl +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE checkControl.ProjectId=@projectId AND +checkControl.State != '7' AND checkControl.CheckControlCode in (select CheckControlCode from Check_CheckControlApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) + +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼ' AS MenuName + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE GJSX.ProjectId=@projectId AND +GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0 +and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0) +or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID)) +) + +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼر' AS MenuName + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'../PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +GJSX.State = 3 and GJSX.ProgressStatus=1 and (GJSX.UserID = @userId OR GJSX.User_ReceiveID = @userId ) + +--UNION ALL +--SELECT InspectionEquipmentId AS DataId +-- ,'6c2c1e5e-1812-4e1c-a683-7125518e28c7' AS MenuId +-- ,'豸ϱȷ' AS MenuName +-- ,Equipment.InspectionName AS Content +-- ,UserId +-- ,users.UserName +-- ,Equipment.InspectionDate AS DataTime +-- ,CONVERT(varchar(100),Equipment.InspectionDate, 23) AS DataTimeStr +-- ,'../CQMS/Comprehensive/InspectionEquipmentEdit.aspx?ToDo=ToDo&InspectionEquipmentId='+Equipment.InspectionEquipmentId AS PCUrl +--FROM Comprehensive_InspectionEquipment AS Equipment +--LEFT JOIN Sys_User AS users ON users.UserId =@userId +--WHERE Equipment.ProjectId=@projectId and +--Equipment.Status!='3' AND Equipment.InspectionEquipmentId in (select InspectionEquipmentId from Comprehensive_InspectionEquipmentApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) +--UNION ALL +--SELECT InspectionPersonId AS DataId +-- ,'8ed133de-5899-4687-878a-20b1f5280f18' AS MenuId +-- ,'Աȷ' AS MenuName +-- ,Person.PersonName AS Content +-- ,UserId +-- ,users.UserName +-- ,Person.CompileDate AS DataTime +-- ,CONVERT(varchar(100),Person.CompileDate, 23) AS DataTimeStr +-- ,'../CQMS/Comprehensive/InspectionPersonEdit.aspx?ToDo=ToDo&InspectionPersonId='+Person.InspectionPersonId AS PCUrl +--FROM Comprehensive_InspectionPerson AS Person +--LEFT JOIN Sys_User AS users ON users.UserId =@userId +--WHERE Person.ProjectId=@projectId and +--Person.Status!='3' AND Person.InspectionPersonId in (select InspectionPersonId from Comprehensive_InspectionPersonApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) +--UNION ALL +--SELECT InspectionMachineId AS DataId +-- ,'aa55fad1-6c51-43f5-8c99-3c6aaae79118' AS MenuId +-- ,'߱ȷ' AS MenuName +-- ,Machine.InspectionMachineName AS Content +-- ,UserId +-- ,users.UserName +-- ,Machine.CompileDate AS DataTime +-- ,CONVERT(varchar(100),Machine.CompileDate, 23) AS DataTimeStr +-- ,'../CQMS/Comprehensive/InspectionMachineEdit.aspx?ToDo=ToDo&InspectionMachineId='+Machine.InspectionMachineId AS PCUrl +--FROM Comprehensive_InspectionMachine AS Machine +--LEFT JOIN Sys_User AS users ON users.UserId =@userId +--WHERE Machine.ProjectId=@projectId and +--Machine.Status!='3' AND Machine.InspectionMachineId in (select InspectionMachineId from Comprehensive_InspectionMachineApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) +UNION ALL +SELECT ConstructSolutionId AS DataId + ,'91C4BFDB-0A51-4992-99CC-EB4EC185593D' AS MenuId + ,'ʩ' AS MenuName + ,Solution.SolutionName AS Content + ,UserId + ,users.UserName + ,Solution.CompileDate AS DataTime + ,CONVERT(varchar(100),Solution.CompileDate, 23) AS DataTimeStr + ,'../CQMS/Solution/EditConstructSolution.aspx?ToDo=ToDo&ConstructSolutionId='+Solution.ConstructSolutionId AS PCUrl +FROM Solution_CQMSConstructSolution AS Solution +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE Solution.ProjectId=@projectId and +Solution.State!='3' +AND Solution.ConstructSolutionId in +(select top 1 ConstructSolutionId from ( +SELECT Solution_CQMSConstructSolutionApprove.* +FROM Solution_CQMSConstructSolutionApprove, +(SELECT MIN([order]) AS [order],ConstructSolutionId FROM Solution_CQMSConstructSolutionApprove where ApproveType!='S' and ApproveDate is null GROUP BY ConstructSolutionId )b +WHERE Solution_CQMSConstructSolutionApprove.[order] = b.[order] and Solution_CQMSConstructSolutionApprove.ConstructSolutionId = b.ConstructSolutionId + ) approve +where approve.ApproveMan=@userId ) + +UNION ALL +SELECT InspectionId AS DataId + ,'4781f467-35bf-4cf2-aaa4-7960a175eb61' AS MenuId + ,'֪ͨ' AS MenuName + ,InspectionManagement.AcceptanceSite AS Content + ,UserId + ,users.UserName + ,InspectionManagement.CompileDate AS DataTime + ,CONVERT(varchar(100),InspectionManagement.CompileDate, 23) AS DataTimeStr + ,'../CQMS/ProcessControl/InspectionNoticeEdit.aspx?View=View&InspectionId='+InspectionManagement.InspectionId AS PCUrl +FROM ProcessControl_InspectionManagement AS InspectionManagement +LEFT JOIN Sys_User AS users ON users.UserId =@userId +WHERE InspectionManagement.ProjectId=@projectId and +dateadd(day,3,InspectionManagement.CompileDate)>getdate() and InspectionManagement.AcceptanceCheckMan like '%'+@userId+'%' +UNION ALL +SELECT CheckSpecialId AS DataId + ,'1B08048F-93ED-4E84-AE65-DB7917EA2DFB' AS MenuId + ,'ר' AS MenuName + ,CheckItemSet.CheckItemName AS Content + ,UserId + ,users.UserName + ,CheckSpecial.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckSpecial.CheckTime, 23) AS DataTimeStr + ,'../HSSE/Check/CheckSpecialView.aspx?CheckSpecialId='+CheckSpecial.CheckSpecialId AS PCUrl +FROM Check_CheckSpecial AS CheckSpecial +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Technique_CheckItemSet AS CheckItemSet ON CheckItemSet.CheckItemSetId =CheckSpecial.CheckItemSetId +WHERE CheckSpecial.ProjectId=@projectId and +dateadd(day,3,CheckSpecial.CheckTime)>getdate() and CheckSpecial.PartInPersonIds like '%'+@userId+'%' +UNION ALL +SELECT CheckColligationId AS DataId + ,'C198EBA8-9E23-4654-92E1-09C61105C522' AS MenuId + ,'ۺϼ' AS MenuName + ,case CheckType when '0' then 'ܼ' when '1' then '¼' else '' end AS Content + ,users.UserId + ,users.UserName + ,CheckColligation.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckColligation.CheckTime, 23) AS DataTimeStr + ,'../HSSE/Check/CheckColligationEdit.aspx?CheckColligationId='+CheckColligation.CheckColligationId AS PCUrl +FROM Check_CheckColligation AS CheckColligation +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Sys_FlowOperate AS FlowOperate ON CheckColligation.CheckColligationId=FlowOperate.DataId +LEFT JOIN Sys_User AS OperateUser ON FlowOperate.OperaterId=OperateUser.UserId +WHERE CheckColligation.ProjectId=@projectId and FlowOperate.IsClosed <> 1 and FlowOperate.OperaterId=@userId +UNION ALL +SELECT PatrolPlanId AS DataId + ,'D256E5C8-DC76-4F4D-BABE-A253418823F4' AS MenuId + ,'Ѳ' AS MenuName + ,HazardListItem.HazardItems AS Content + ,UserId + ,users.UserName + ,PatrolPlan.LimitCheckDate AS DataTime + ,CONVERT(varchar(100),PatrolPlan.LimitCheckDate, 23) AS DataTimeStr + ,'../HSSE/Hazard/RoutingInspectionEdit.aspx?PatrolPlanId='+PatrolPlan.PatrolPlanId AS PCUrl +FROM Hazard_PatrolPlan AS PatrolPlan +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Hazard_HazardSelectedItem AS HazardListItem on HazardListItem.HazardSelectedItemId=PatrolPlan.HazardSelectedItemId +WHERE HazardListItem.ProjectId=@projectId and +dateadd(day,-3,PatrolPlan.LimitCheckDate)=22 and (select COUNT(*) from JDGL_QuantityCompletion WHERE ProjectId=@projectId and DATENAME(year,GETDATE())=DATENAME(year,EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,EndDate))=0) +--or (DATEADD(day,60,(select top 1 EndDate from JDGL_QuantityCompletion WHERE ProjectId=@projectId order by EndDate desc))=22 and +DATENAME(year,GETDATE())=DATENAME(year,MonthPlan.PlanDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,MonthPlan.PlanDate) + +UNION ALL +SELECT DISTINCT --WeekPlan.WeekPlanId AS DataId + '' AS DataId + ,'56A54B4B-BBA3-4249-9FFC-3A60DAC79059' AS MenuId + ,'ȹܽȼƻδ' AS MenuName + ,'' AS Content + ,users.UserId + ,users.UserName + ,GETDATE() AS DataTime + ,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr + ,'../JDGL/Check/WeekPlanEdit.aspx?ToDo=ToDo&WeekNo='+WeekPlan.WeekNo AS PCUrl +FROM JDGL_WeekPlan AS WeekPlan +LEFT JOIN Sys_User AS users ON users.UserId =@userId +LEFT JOIN Project_ProjectUser as pu on pu.UserId=@userId +WHERE WeekPlan.ProjectId=@projectId +and WeekPlan.DutyPerson like '%'+@userId+'%' and WeekPlan.IsOK =0 and DATENAME(DAY,GETDATE())<=DATENAME(DAY,WeekPlan.EndDate) +and DATENAME(year,GETDATE())=DATENAME(year,WeekPlan.EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,WeekPlan.EndDate) + + +ORDER BY DataTime DESC +END + + + + + +GO + + + + + +--ȡǰ˹̨Ԥ +ALTER PROCEDURE [dbo].[Sp_WorkBench_GetToDoItems] + @userId NVARCHAR(200)=NULL, + @sType char(10)=null +AS +/*ȡǰ˴*/ +BEGIN +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲ' AS MenuName + ,project.ProjectCode + ,register.RegisterDef AS Content + ,users.UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'HSSE/HiddenInspection/HiddenRectificationRectify.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and register.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +((register.states = '1' AND (register.ResponsibleMan =@userId OR register.CCManIds LIKE ('%'+@userId+'%') )) +) +UNION ALL + +SELECT HazardRegisterId AS DataId + ,'B6BE5FE0-CB84-47FF-A6C3-5AD9E1CCE079' AS MenuId + ,'ȫѲȷ' AS MenuName + ,project.ProjectCode + ,register.RegisterDef AS Content + ,users.UserId + ,users.UserName + ,register.RegisterDate AS DataTime + ,CONVERT(varchar(100),register.RegisterDate, 23) AS DataTimeStr + ,'HSSE/HiddenInspection/HiddenRectificationConfirm.aspx?HazardRegisterId='+register.HazardRegisterId AS PCUrl +FROM HSSE_Hazard_HazardRegister AS register +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and register.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +register.states = '2' AND register.CheckManId =@userId + +UNION ALL +SELECT CheckControlCode AS DataId + ,'B3E99BD9-FDC7-4F15-8C3C-A7821AC9E306' AS MenuId + ,'Ѳ' AS MenuName + ,project.ProjectCode + ,checkControl.QuestionDef AS Content + ,users.UserId + ,users.UserName + ,checkControl.CheckDate AS DataTime + ,CONVERT(varchar(100),checkControl.CheckDate, 23) AS DataTimeStr + ,'CQMS/Check/ChecklistEdit.aspx?CheckControlCode='+checkControl.CheckControlCode AS PCUrl +FROM Check_CheckControl AS checkControl +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and checkControl.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +checkControl.State != '7' AND checkControl.CheckControlCode in (select CheckControlCode from Check_CheckControlApprove approve where approve.ApproveType!='S' and approve.ApproveMan=@userId and approve.ApproveDate is null ) + +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼ' AS MenuName + ,project.ProjectCode + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +GJSX.State != 0 AND (((select count(*) from GJSX_detail detail where detail.Progress_user=@userId and detail.GJSXID=GJSX.GJSXID)=0 +and (select count(*) from GJSX_Process process where process.UserId=@userId and process.GJSXID=GJSX.GJSXID)>0) +or (GJSX.User_Acceptance like '%'+@userId+'%' and (select count(*) from GJSX_detail detail where detail.GJSXID=GJSX.GJSXID)=(select count(*) from GJSX_Process process where process.GJSXID=GJSX.GJSXID)) +) +UNION ALL +SELECT GJSXID AS DataId + ,'0BEA2126-7A48-40EB-8E21-99148E91A22B' AS MenuId + ,'ؼر' AS MenuName + ,project.ProjectCode + ,GJSX.Detail AS Content + ,users.UserId + ,users.UserName + ,GJSX.CreateDate AS DataTime + ,CONVERT(varchar(100),GJSX.CreateDate, 23) AS DataTimeStr + ,'PZHGL/GJSX/GJSXListEdit.aspx?ToDo=ToDo&EditType=Edit&ID='+GJSXID AS PCUrl +FROM GJSX +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and GJSX.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +GJSX.State = 3 and GJSX.ProgressStatus=1 and (GJSX.UserID = @userId OR GJSX.User_ReceiveID = @userId ) + + +UNION ALL +SELECT ConstructSolutionId AS DataId + ,'91C4BFDB-0A51-4992-99CC-EB4EC185593D' AS MenuId + ,'ʩ' AS MenuName + ,project.ProjectCode + ,Solution.SolutionName AS Content + ,users.UserId + ,users.UserName + ,Solution.CompileDate AS DataTime + ,CONVERT(varchar(100),Solution.CompileDate, 23) AS DataTimeStr + ,'CQMS/Solution/EditConstructSolution.aspx?ConstructSolutionId='+Solution.ConstructSolutionId AS PCUrl +FROM Solution_CQMSConstructSolution AS Solution +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and Solution.ProjectId = projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +Solution.State!='3' +AND Solution.ConstructSolutionId in +(select top 1 ConstructSolutionId from ( +SELECT Solution_CQMSConstructSolutionApprove.* +FROM Solution_CQMSConstructSolutionApprove, +(SELECT MIN([order]) AS [order],ConstructSolutionId FROM Solution_CQMSConstructSolutionApprove where ApproveType!='S' and ApproveDate is null GROUP BY ConstructSolutionId )b +WHERE Solution_CQMSConstructSolutionApprove.[order] = b.[order] and Solution_CQMSConstructSolutionApprove.ConstructSolutionId = b.ConstructSolutionId + ) approve +where approve.ApproveMan=@userId ) + +UNION ALL +SELECT InspectionId AS DataId + ,'4781f467-35bf-4cf2-aaa4-7960a175eb61' AS MenuId + ,'֪ͨ' AS MenuName + ,project.ProjectCode + ,InspectionManagement.AcceptanceSite AS Content + ,users.UserId + ,users.UserName + ,InspectionManagement.CompileDate AS DataTime + ,CONVERT(varchar(100),InspectionManagement.CompileDate, 23) AS DataTimeStr + ,'CQMS/ProcessControl/InspectionNoticeEdit.aspx?View=View&InspectionId='+InspectionManagement.InspectionId AS PCUrl +FROM ProcessControl_InspectionManagement AS InspectionManagement +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +WHERE (@sType='1' or @sType='2') and InspectionManagement.ProjectId=projectUser.ProjectId and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +dateadd(day,3,InspectionManagement.CompileDate)>getdate() and InspectionManagement.AcceptanceCheckMan like '%'+@userId+'%' +UNION ALL +SELECT CheckSpecialId AS DataId + ,'1B08048F-93ED-4E84-AE65-DB7917EA2DFB' AS MenuId + ,'ר' AS MenuName + ,project.ProjectCode + ,CheckItemSet.CheckItemName AS Content + ,users.UserId + ,users.UserName + ,CheckSpecial.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckSpecial.CheckTime, 23) AS DataTimeStr + ,'HSSE/Check/CheckSpecialView.aspx?CheckSpecialId='+CheckSpecial.CheckSpecialId AS PCUrl +FROM Check_CheckSpecial AS CheckSpecial +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +LEFT JOIN Technique_CheckItemSet AS CheckItemSet ON CheckItemSet.CheckItemSetId =CheckSpecial.CheckItemSetId +WHERE (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +dateadd(day,3,CheckSpecial.CheckTime)>getdate() and CheckSpecial.PartInPersonIds like '%'+@userId+'%' +and CheckSpecial.ProjectId = projectUser.ProjectId +UNION ALL +SELECT CheckColligationId AS DataId + ,'C198EBA8-9E23-4654-92E1-09C61105C522' AS MenuId + ,'ۺϼ' AS MenuName + ,project.ProjectCode + ,case CheckType when '0' then 'ܼ' when '1' then '¼' else '' end AS Content + ,users.UserId + ,users.UserName + ,CheckColligation.CheckTime AS DataTime + ,CONVERT(varchar(100),CheckColligation.CheckTime, 23) AS DataTimeStr + ,'HSSE/Check/CheckColligationEdit.aspx?CheckColligationId='+CheckColligation.CheckColligationId AS PCUrl +FROM Check_CheckColligation AS CheckColligation +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +LEFT JOIN Sys_FlowOperate AS FlowOperate ON CheckColligation.CheckColligationId=FlowOperate.DataId +LEFT JOIN Sys_User AS OperateUser ON FlowOperate.OperaterId=OperateUser.UserId +WHERE (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +FlowOperate.IsClosed <> 1 and FlowOperate.OperaterId=@userId +and CheckColligation.ProjectId = projectUser.ProjectId +UNION ALL +SELECT PatrolPlanId AS DataId + ,'D256E5C8-DC76-4F4D-BABE-A253418823F4' AS MenuId + ,'Ѳ' AS MenuName + ,project.ProjectCode + ,HazardListItem.HazardItems AS Content + ,users.UserId + ,users.UserName + ,PatrolPlan.LimitCheckDate AS DataTime + ,CONVERT(varchar(100),PatrolPlan.LimitCheckDate, 23) AS DataTimeStr + ,'HSSE/Hazard/RoutingInspectionEdit.aspx?PatrolPlanId='+PatrolPlan.PatrolPlanId AS PCUrl +FROM Hazard_PatrolPlan AS PatrolPlan +left join Project_ProjectUser as projectUser on projectUser.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId = projectUser.UserId +left join Base_Project as project on project.ProjectId =projectUser.ProjectId +LEFT JOIN Hazard_HazardSelectedItem AS HazardListItem on HazardListItem.HazardSelectedItemId=PatrolPlan.HazardSelectedItemId +WHERE (@sType='1' or @sType='2') and (project.ProjectState = '1' OR project.ProjectState IS NULL) and +dateadd(day,-3,PatrolPlan.LimitCheckDate)=22 and (select COUNT(*) from JDGL_QuantityCompletion WHERE DATENAME(year,GETDATE())=DATENAME(year,EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,EndDate))=0) +and (@sType='1' or @sType='2') and Project.ProjectId = pu.ProjectId --or (DATEADD(day,60,(select top 1 EndDate from JDGL_QuantityCompletion WHERE ProjectId=@projectId order by EndDate desc))=22 and +DATENAME(year,GETDATE())=DATENAME(year,MonthPlan.PlanDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,MonthPlan.PlanDate) +and (project.ProjectState = '1' OR project.ProjectState IS NULL) and (@sType='1' or @sType='2') +UNION ALL +SELECT DISTINCT --WeekPlan.WeekPlanId AS DataId + '' AS DataId + ,'56A54B4B-BBA3-4249-9FFC-3A60DAC79059' AS MenuId + ,'ȹܽȼƻδ' AS MenuName + ,project.ProjectCode + ,'' AS Content + ,users.UserId + ,users.UserName + ,GETDATE() AS DataTime + ,CONVERT(varchar(100),GETDATE(), 23) AS DataTimeStr + ,'JDGL/Check/WeekPlanEdit.aspx?WeekNo='+WeekPlan.WeekNo AS PCUrl +FROM JDGL_WeekPlan AS WeekPlan +LEFT JOIN Project_ProjectUser as pu on pu.UserId=@userId +LEFT JOIN Sys_User AS users ON users.UserId =pu.UserId +LEFT JOIN Base_Project as project on project.ProjectId =pu.ProjectId +WHERE WeekPlan.ProjectId = pu.ProjectId +and WeekPlan.DutyPerson like '%'+@userId+'%' and WeekPlan.IsOK =0 and DATENAME(DAY,GETDATE())<=DATENAME(DAY,WeekPlan.EndDate) +and DATENAME(year,GETDATE())=DATENAME(year,WeekPlan.EndDate) and DATENAME(MONTH,GETDATE())=DATENAME(MONTH,WeekPlan.EndDate) +and (project.ProjectState = '1' OR project.ProjectState IS NULL) and (@sType='1' or @sType='2') + +ORDER BY DataTime DESC +END + + + + + +GO + + diff --git a/DataBase/版本日志/SUBQHSE_V2025-08-18-geh(EPC项目现场质量数据).sql b/DataBase/版本日志/SUBQHSE_V2025-08-18-geh(EPC项目现场质量数据).sql new file mode 100644 index 00000000..ac8b73c3 --- /dev/null +++ b/DataBase/版本日志/SUBQHSE_V2025-08-18-geh(EPC项目现场质量数据).sql @@ -0,0 +1,26 @@ +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'现场质量数据', NULL, N'', 170, N'0', N'Menu_ZHGL', '0', '0', '1'); + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'51EA8258-C81D-4C33-B939-769450979D14', N'质量基本信息', NULL, N'ZHGL/CQMSData/CQMSBasicData.aspx', 10, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'6E1F4EF5-47CA-4DF8-B561-3C98DBD88EA2', N'焊接管理', NULL, N'ZHGL/CQMSData/WeldingData.aspx', 20, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'C9076E93-29DB-419C-8902-789163C6554A', N'现场质量检查', NULL, N'ZHGL/CQMSData/CQMSCheckData.aspx', 30, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'64FED633-2436-426B-A230-7C0038E44AD4', N'设备材料计量器具质量文件上报', NULL, N'ZHGL/CQMSData/CQMSEquipAndMachineData.aspx', 40, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + + +INSERT INTO [dbo].[Sys_Menu] ([MenuId], [MenuName], [Icon], [Url], [SortIndex], [SuperMenu], [MenuType], [IsOffice], [IsEnd], [IsUsed]) +VALUES (N'12E7E1FD-6D8D-41D8-801C-E15B68805213', N'共检点明细', NULL, N'ZHGL/CQMSData/CQMSNoticeDetailsData.aspx', 50, N'E64D67C1-BA8E-4329-AFEE-23F9BC45CDDD', N'Menu_ZHGL', '0', '1', '1'); + +go \ No newline at end of file diff --git a/SGGL/BLL/BLL.csproj b/SGGL/BLL/BLL.csproj index f2c35878..de1372da 100644 --- a/SGGL/BLL/BLL.csproj +++ b/SGGL/BLL/BLL.csproj @@ -610,6 +610,7 @@ + diff --git a/SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs b/SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs new file mode 100644 index 00000000..c9b5ee1f --- /dev/null +++ b/SGGL/BLL/JDGL/SGManPower/SGManPowerService.cs @@ -0,0 +1,491 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using Model; +using System.Data; + + +namespace BLL +{ + public class SGManPowerService + { + /// + /// 检查并发送人力资源预警 + /// + public static Model.ResponeData CheckAndSendPersonWarning() + { + var responeData = new Model.ResponeData(); + // 合并两个集合 + var allItems = new List(); + var projects = Funs.DB.Base_Project.Where(p => p.ProjectState == BLL.Const.ProjectState_1).ToList(); + // foreach (var project in projects) + // { + // 检查管理人员到期未到岗情况 + var items1 = CheckManagerNotArrived("c7ade79e-7646-4c59-a8fd-020a7e3138c6"); + + // 检查作业人员人力偏差情况 + var items2 = CheckWorkerDeviation("c7ade79e-7646-4c59-a8fd-020a7e3138c6"); + + + if (items1 != null) + { + allItems.AddRange(items1); + } + + if (items2 != null) + { + allItems.AddRange(items2); + } + + // } + responeData.data = allItems; + responeData.message = "人员预警"; + return responeData; + } + + + /// + /// 检查管理人员到期未到岗情况(超过一周发出预警) + /// + /// 项目ID + private static IEnumerable CheckManagerNotArrived(string projectId) + { + //获取计划的最新版本 + var version = "1"; + var sgMan = Funs.DB.JDGL_SGManPower.Where(x => x.ProjectId == projectId).OrderByDescending(x => x.Version) + .FirstOrDefault(); + if (sgMan != null) + { + version = sgMan.Version; + } + + // 先获取计划表超过一周的管理岗位有哪些 + var dataList = (from x in Funs.DB.JDGL_SGManPower + join p in Funs.DB.Base_WorkPost on x.WorkPostId equals p.WorkPostId into pp + from y in pp.DefaultIfEmpty() + where x.ProjectId == projectId && (y.PostType == "4" || y.PostType == "1") && + x.PlanDate <= DateTime.Now.AddDays(-7) && x.Version == version + select x).ToList(); + + var lItems = new List(); + //循环检查实际考勤中的人数 + foreach (var data in dataList) + { + //根据人员计划表获取计划中的管理人员数 + int num = getInOutRecordNum(data); + if (data.Quantity > num) + { + lItems = SendManagerWarning(data.UnitId, projectId, data.UnitWorkId, data.PlanDate, data.Quantity, num); + } + } + + return lItems; + } + + //获取实际考勤人员数 + private static int getInOutRecordNum(JDGL_SGManPower sgManPower) + { + string strSql = @" + SELECT e.UnitId, e.PostId, e.RecordDate, p.WorkAreaId as UnitWorkId + FROM T_d_EmployInOutRecord e INNER JOIN SitePerson_Person p ON e.IDCardNo = p.IdentityCard AND e.ProjectId = p.ProjectId + WHERE e.PostId IS NOT NULL AND e.PostId != '' + AND e.ProjectId = @ProjectId + AND e.RecordDate = @RecordDate + AND e.UnitId = @UnitId + AND e.PostId = @PostId"; + + var parameters = new List + { + new System.Data.SqlClient.SqlParameter("@ProjectId", sgManPower.ProjectId), + new System.Data.SqlClient.SqlParameter("@RecordDate", sgManPower.PlanDate), + new System.Data.SqlClient.SqlParameter("@UnitId", sgManPower.UnitId), + new System.Data.SqlClient.SqlParameter("@PostId", sgManPower.WorkPostId), + }; + + // 执行查询获取分组数据 + var dt = SQLHelper.GetDataTableRunText(strSql, parameters.ToArray()); + + // 创建一个新的DataTable来存储处理后的数据 + DataTable processedDt = dt.Clone(); + + foreach (System.Data.DataRow row in dt.Rows) + { + string ids = row["UnitWorkId"] != DBNull.Value ? row["UnitWorkId"].ToString() : string.Empty; + if (!string.IsNullOrEmpty(ids)) + { + string[] unitWorkIdArray = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string unitWorkId in unitWorkIdArray) + { + // 往processedDt里面添加数据,每个UnitWorkId一行 + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = unitWorkId.Trim(); + processedDt.Rows.Add(newRow); + } + } + else + { + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = string.Empty; + processedDt.Rows.Add(newRow); + } + } + + // 确定要用于后续处理的数据源 + IEnumerable dataSource = processedDt.AsEnumerable(); + + if (string.IsNullOrEmpty(sgManPower.UnitWorkId)) + { + dataSource = dataSource.Where(x => x["UnitWorkId"] == null); + } + else + { + dataSource = dataSource.Where(x => x["UnitWorkId"] != DBNull.Value && x["UnitWorkId"].ToString() == sgManPower.UnitWorkId); + } + + return dataSource.Count(); + } + + /// + /// 发送管理人员预警 + /// + /// 项目ID + /// 单位id + private static List SendManagerWarning(string unitId, string projectId, string unitWorkId, DateTime? planDate, int? quantity, int num) + { + // 发送预警信息 + var toDoItems = new List(); + + var unitWorks = (from x in Funs.DB.WBS_UnitWork + where x.UnitWorkId == unitWorkId + select new { x.UnitWorkId, x.UnitWorkName }).FirstOrDefault(); + + var projectUnits = (from x in Funs.DB.Project_ProjectUnit + join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId + where x.UnitId == unitId + select new { x.UnitId, y.UnitName, x.UnitType }).FirstOrDefault(); + if (projectUnits != null) + { + List toUserIds = new List(); + + // 施工单位人员推送至施工单位项目经理和总包单位施工经理 + if (projectUnits.UnitType == Const.ProjectUnitType_2) // 施工分包单位 + { + // 获取施工单位项目经理 + var constructionManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ProjectManager) + select x).ToList(); + + if (constructionManagers.Count > 0) + { + foreach (var projectUser in constructionManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + + // 获取总包单位施工经理 + var generalContractorUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(pu => + pu.ProjectId == projectId && pu.UnitType == Const.ProjectUnitType_1); // 总包单位 + + if (generalContractorUnit != null) + { + var constructionManagerGCs = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == generalContractorUnit.UnitId && + x.IsPost == true && x.RoleId.Contains(Const.ConstructionManager) + select x).ToList(); + if (constructionManagerGCs.Count > 0) + { + foreach (var projectUser in constructionManagerGCs) + { + toUserIds.Add(projectUser.UserId); + } + } + } + } + // 总包单位人员推送到总包单位施工经理和项目经理 + else if (projectUnits.UnitType == Const.ProjectUnitType_1) // 总包单位 + { + // 获取总包单位施工经理 + var constructionManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ConstructionManager) + select x).ToList(); + if (constructionManagers.Count() > 0) + { + foreach (var projectUser in constructionManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + + // 获取总包单位项目经理 + var projectManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ProjectManager) + select x).ToList(); + if (projectManagers.Count() > 0) + { + foreach (var projectUser in projectManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + } + + string warningContent = string.Empty; + if (unitWorks != null) + { + warningContent = $"{projectUnits.UnitName}单位{unitWorks.UnitWorkName}装置计划{planDate}投入人力{quantity}人,实际考勤为{num}人。"; + } + else + { + warningContent = $"{projectUnits.UnitName}单位计划{planDate}投入人力{quantity}人,实际考勤为{num}人。"; + } + + foreach (var userId in toUserIds) + { + Model.ToDoItem toDoItem = new Model.ToDoItem(); + toDoItem.DataId = SQLHelper.GetNewID(typeof(Model.ToDoItem)); + toDoItem.MenuId = ""; + toDoItem.MenuName = "管理人员到岗预警"; + toDoItem.Content = warningContent; + toDoItem.UserId = userId; + toDoItem.UserName = UserService.GetUserNameByUserId(userId); + toDoItem.DataTime = DateTime.Now; + toDoItem.DataTimeStr = DateTime.Now.ToString("yyyy-MM-dd"); + toDoItem.PCUrl = ""; + toDoItem.UrlStr = "pages/exam/examjs"; + toDoItems.Add(toDoItem); + } + } + + return toDoItems; + } + + // /// + // /// 检查作业人员人力偏差情况(一周内累计偏差值超过计划的10%) + // /// + // /// 项目ID + private static IEnumerable CheckWorkerDeviation(string projectId) + { + //获取计划的最新版本 + var version = "1"; + var sgMan = Funs.DB.JDGL_SGManPower.Where(x => x.ProjectId == projectId).OrderByDescending(x => x.Version) + .FirstOrDefault(); + if (sgMan != null) + { + version = sgMan.Version; + } + + // 先获取计划表一周的作业岗位有哪些 + var dataList = (from x in Funs.DB.JDGL_SGManPower + join p in Funs.DB.Base_WorkPost on x.WorkPostId equals p.WorkPostId into pp + from y in pp.DefaultIfEmpty() + where x.ProjectId == projectId && (y.PostType == "2" || y.PostType == "3") && + x.PlanDate >= DateTime.Now.AddDays(-7) && x.PlanDate <= DateTime.Now && x.Version == version + group x by new + { + x.UnitId, + x.UnitWorkId, + x.WorkPostId + } + into g + select new + { + UnitId = g.Key.UnitId, + UnitWorkId = g.Key.UnitWorkId, + WorkPostId = g.Key.WorkPostId, + QuantitySum = g.Sum(x => x.Quantity) + }).ToList(); + + var lItems = new List(); + //循环检查实际考勤中的人数 + foreach (var data in dataList) + { + //根据人员计划表获取计划中的作业人员数 + int num = getInOutRecordNum1(data.UnitId, data.UnitWorkId, data.WorkPostId,projectId); + + // 计算偏差百分比 + if (data.QuantitySum > num) + { + double deviationPercentage = Math.Abs((double)((data.QuantitySum - num) / data.QuantitySum)); + // 如果偏差超过10%,发出预警 + if (deviationPercentage > 0.1) + { + lItems = SendWorkerDeviationWarning(data.UnitId, projectId, data.UnitWorkId, data.QuantitySum, 0); + } + } + } + + return lItems; + + } + + + //获取实际考勤人员数 + private static int getInOutRecordNum1(string unitId, string unitWorkId, string workPostId, string projectId) + { + string strSql = @" + SELECT e.UnitId, e.PostId, e.RecordDate, p.WorkAreaId as UnitWorkId + FROM T_d_EmployInOutRecord e INNER JOIN SitePerson_Person p ON e.IDCardNo = p.IdentityCard AND e.ProjectId = p.ProjectId + WHERE e.PostId IS NOT NULL AND e.PostId != '' + AND e.ProjectId = @ProjectId + AND e.UnitId = @UnitId + AND e.PostId = @PostId + AND e.RecordDate >= @StartDate + AND e.RecordDate <= @EndDate"; + + var parameters = new List + { + new System.Data.SqlClient.SqlParameter("@ProjectId", projectId), + new System.Data.SqlClient.SqlParameter("@UnitId", unitId), + new System.Data.SqlClient.SqlParameter("@PostId", workPostId), + new System.Data.SqlClient.SqlParameter("@StartDate", DateTime.Now.AddDays(-7)), + new System.Data.SqlClient.SqlParameter("@EndDate", DateTime.Now), + }; + + // 执行查询获取分组数据 + var dt = SQLHelper.GetDataTableRunText(strSql, parameters.ToArray()); + + // 创建一个新的DataTable来存储处理后的数据 + DataTable processedDt = dt.Clone(); + + foreach (System.Data.DataRow row in dt.Rows) + { + string ids = row["UnitWorkId"] != DBNull.Value ? row["UnitWorkId"].ToString() : string.Empty; + if (!string.IsNullOrEmpty(ids)) + { + string[] unitWorkIdArray = ids.Split(new char[] { ',' }, StringSplitOptions.RemoveEmptyEntries); + foreach (string id in unitWorkIdArray) + { + // 往processedDt里面添加数据,每个UnitWorkId一行 + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = id.Trim(); + processedDt.Rows.Add(newRow); + } + } + else + { + DataRow newRow = processedDt.NewRow(); + newRow["UnitId"] = row["UnitId"]; + newRow["PostId"] = row["PostId"]; + newRow["RecordDate"] = row["RecordDate"]; + newRow["UnitWorkId"] = string.Empty; + processedDt.Rows.Add(newRow); + } + } + + // 确定要用于后续处理的数据源 + IEnumerable dataSource = processedDt.AsEnumerable(); + + if (string.IsNullOrEmpty(unitWorkId)) + { + dataSource = dataSource.Where(x => x["UnitWorkId"] == null); + } + else + { + dataSource = dataSource.Where(x => x["UnitWorkId"] != DBNull.Value && x["UnitWorkId"].ToString() == unitWorkId); + } + + return dataSource.Count(); + } + + + /// + /// 发送作业人员偏差预警 + /// + /// 项目ID + /// 单位ID + /// 计划总人数 + /// 实际总人数 + /// 偏差百分比 + private static List SendWorkerDeviationWarning(string unitId, string projectId, string unitWorkId, int? quantity, int num) + { + + // 发送预警信息 + var toDoItems = new List(); + List toUserIds = new List(); + + var unitWorks = (from x in Funs.DB.WBS_UnitWork + where x.UnitWorkId == unitWorkId + select new { x.UnitWorkId, x.UnitWorkName }).FirstOrDefault(); + + var projectUnits = (from x in Funs.DB.Project_ProjectUnit + join y in Funs.DB.Base_Unit on x.UnitId equals y.UnitId + where x.UnitId == unitId + select new { x.UnitId, y.UnitName, x.UnitType }).FirstOrDefault(); + + // 获取施工单位项目经理 + var constructionManagers = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == unitId && x.IsPost == true && + x.RoleId.Contains(Const.ProjectManager) + select x).ToList(); + + if (constructionManagers.Count > 0) + { + foreach (var projectUser in constructionManagers) + { + toUserIds.Add(projectUser.UserId); + } + } + // 获取总包单位施工经理 + var generalContractorUnit = Funs.DB.Project_ProjectUnit.FirstOrDefault(pu => + pu.ProjectId == projectId && pu.UnitType == Const.ProjectUnitType_1); // 总包单位 + + if (generalContractorUnit != null) + { + var constructionManagerGCs = (from x in Funs.DB.Project_ProjectUser + where x.ProjectId == projectId && x.UnitId == generalContractorUnit.UnitId && + x.IsPost == true && x.RoleId.Contains(Const.ConstructionManager) + select x).ToList(); + if (constructionManagerGCs.Count > 0) + { + foreach (var projectUser in constructionManagerGCs) + { + toUserIds.Add(projectUser.UserId); + } + } + } + + // 构建预警信息内容 + string warningContent = string.Empty; + if (unitWorks != null) + { + warningContent = + $"{projectUnits.UnitName}单位{unitWorks.UnitWorkName}装置计划投入人力{quantity}人,实际考勤为{num}人。"; + } + else + { + warningContent = $"{projectUnits.UnitName}单位计划投入人力{quantity}人,实际考勤为{num}人。"; + } + + // 发送预警信息 + foreach (var userId in toUserIds) + { + Model.ToDoItem toDoItem = new Model.ToDoItem(); + toDoItem.DataId = SQLHelper.GetNewID(typeof(Model.ToDoItem)); + toDoItem.MenuId = ""; + toDoItem.MenuName = "人力资源偏差预警"; + toDoItem.Content = warningContent; + toDoItem.UserId = userId; + toDoItem.UserName = UserService.GetUserNameByUserId(userId); + toDoItem.DataTime = DateTime.Now; + toDoItem.DataTimeStr = DateTime.Now.ToString("yyyy-MM-dd"); + toDoItem.PCUrl = ""; + toDoItem.UrlStr = "pages/exam/examjs"; + toDoItems.Add(toDoItem); + } + return toDoItems; + } + } +} \ No newline at end of file diff --git a/SGGL/BLL/SysManage/UnitService.cs b/SGGL/BLL/SysManage/UnitService.cs index 03bbdcce..07d89036 100644 --- a/SGGL/BLL/SysManage/UnitService.cs +++ b/SGGL/BLL/SysManage/UnitService.cs @@ -684,6 +684,12 @@ namespace BLL Funs.FineUIPleaseSelect(dropName); } } + + /// + /// 获取所有单位名称下拉选择项 + /// + /// + /// public static void InitAllUnitDownList(FineUIPro.DropDownList dropName, bool isShowPlease) { dropName.DataValueField = "UnitId"; diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs index e549ac0f..241e9e32 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDetailsDataInNew.aspx.cs @@ -1,5 +1,6 @@ using Aspose.Words; using BLL; +using FineUIPro.Web.Comprehensive; using FineUIPro.Web.ProjectData; using Model; using NPOI.SS.Formula.Functions; @@ -9,6 +10,7 @@ using System.Data; using System.Data.SqlClient; using System.IO; using System.Linq; +using System.Reflection; using System.Security.Cryptography; using System.Threading; using System.Web; @@ -473,6 +475,7 @@ namespace FineUIPro.Web.CQMS.Comprehensive if (isExitISOValue != null) ///已存在 { Ins.DesignDetailsId = isExitISOValue.DesignDetailsId; + Ins.Status = isExitISOValue.Status; BLL.DesignDetailsService.UpdateDesignDetails(Ins); } else diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx index 7bfdbede..a5b90b09 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawings.aspx @@ -82,6 +82,9 @@ + + <%-- diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs index 81e0e9ce..30351edc 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsDataInNew.aspx.cs @@ -496,6 +496,7 @@ namespace FineUIPro.Web.CQMS.Comprehensive if (isExitISOValue != null) ///已存在 { Ins.DesignDrawingsId = isExitISOValue.DesignDrawingsId; + Ins.Status = isExitISOValue.Status; BLL.DesignDrawingsService.UpdateDesignDrawings(Ins); } else diff --git a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs index 253cbdeb..ce4162ac 100644 --- a/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs +++ b/SGGL/FineUIPro.Web/CQMS/Comprehensive/DesignDrawingsEdit.aspx.cs @@ -37,11 +37,12 @@ namespace FineUIPro.Web.CQMS.Comprehensive GetButtonPower(); BLL.CNProfessionalService.InitCNProfessionalDownList(this.drpCNProfessionalId, true); BLL.UnitWorkService.InitUnitWorkDownList(this.drpUnitWorkIds, this.CurrUser.LoginProjectId, false); - BLL.UnitService.InitUnitDownList(this.drpUnitIds, this.CurrUser.LoginProjectId, false); + //BLL.UnitService.InitUnitDownList(this.drpUnitIds, this.CurrUser.LoginProjectId, false);//总包、分包单位 + BLL.UnitService.InitAllUnitDownList(this.drpUnitIds, this.CurrUser.LoginProjectId, false);//所有单位 //LoadAuditSelect(); //this.agree.Hidden = true; //this.options.Hidden = true; - + //this.btnSave.Hidden = true; //this.btnSubmit.Hidden = true; this.DesignDrawingsId = Request.Params["DesignDrawingsId"]; diff --git a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj index 1317a8b3..fb3d9289 100644 --- a/SGGL/FineUIPro.Web/FineUIPro.Web.csproj +++ b/SGGL/FineUIPro.Web/FineUIPro.Web.csproj @@ -1920,6 +1920,7 @@ + @@ -2207,6 +2208,11 @@ + + + + + @@ -16650,6 +16656,13 @@ Unit.aspx + + UnitCleanupMerge.aspx + ASPXCodeBehind + + + UnitCleanupMerge.aspx + UnitEdit.aspx ASPXCodeBehind @@ -18792,6 +18805,41 @@ ZHDD.aspx + + CQMSBasicData.aspx + ASPXCodeBehind + + + CQMSBasicData.aspx + + + CQMSCheckData.aspx + ASPXCodeBehind + + + CQMSCheckData.aspx + + + CQMSEquipAndMachineData.aspx + ASPXCodeBehind + + + CQMSEquipAndMachineData.aspx + + + CQMSNoticeDetailsData.aspx + ASPXCodeBehind + + + CQMSNoticeDetailsData.aspx + + + WeldingData.aspx + ASPXCodeBehind + + + WeldingData.aspx + AccidentCauseReportBar.aspx ASPXCodeBehind @@ -20131,7 +20179,7 @@ - +