141 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
			
		
		
	
	
			141 lines
		
	
	
		
			5.5 KiB
		
	
	
	
		
			Transact-SQL
		
	
	
	
 | 
						|
ALTER PROC [dbo].[spInOutManHoursReport]
 | 
						|
          @projectId NVARCHAR(50),
 | 
						|
		  @unitId NVARCHAR(max)= NULL,
 | 
						|
		  @postId NVARCHAR(max)= NULL,
 | 
						|
		  @startTime DATETIME = NULL,
 | 
						|
          @endTime DATETIME = NULL    
 | 
						|
AS
 | 
						|
/*****************데貫옘핸****************/
 | 
						|
SELECT CAST(NEWID() AS NVARCHAR(100)) AS ID
 | 
						|
	,T.ProjectId
 | 
						|
	,p.UnitId
 | 
						|
	,ISNULL((case when P.UnitId=''then null 
 | 
						|
		else (case when u.ShortUnitName IS NOT NULL THEN u.ShortUnitName ELSE u.UnitName END) end),'灌列') AS UnitName
 | 
						|
	,ISNULL((case when P.UnitId=''then null 
 | 
						|
		else u.UnitName end),'灌列') AS AllUnitName
 | 
						|
	,p.WorkPostId as PostId
 | 
						|
	,ISNULL((case when W.WorkPostName=''then null else W.WorkPostName end),'灌列') AS PostName
 | 
						|
	,SUM(ISNULL(ManHours,0)) AS ManHoursSum
 | 
						|
	,COUNT(T.NewID) AS ManCountSum 
 | 
						|
	,(SELECT COUNT(PersonId) FROM SitePerson_Person 
 | 
						|
		WHERE  ProjectId = T.ProjectId AND P.UnitId=UnitId AND P.WorkPostId=WorkPostId AND IsUsed=1 AND OutTime IS NOT NULL 
 | 
						|
	group by ProjectId,UnitId,WorkPostId) AS PersonCountSum
 | 
						|
FROM dbo.t_d_EmployInOutRecord AS T
 | 
						|
LEFT JOIN dbo.SitePerson_Person AS P ON T.ProjectId=P.ProjectId AND T.IDCardNo=P.IdentityCard
 | 
						|
LEFT JOIN dbo.Base_Unit AS U ON P.UnitId=U.UnitId
 | 
						|
--LEFT JOIN dbo.ProjectData_TeamGroup AS Team ON P.TeamGroupId=Team.TeamGroupId
 | 
						|
LEFT JOIN dbo.Base_WorkPost AS W ON P.WorkPostId=W.WorkPostId
 | 
						|
WHERE  T.ProjectId = @ProjectId	
 | 
						|
AND (RecordDate >= @startTime OR @startTime IS NULL) 
 | 
						|
AND (RecordDate <= @endTime OR @endTime IS NULL) 
 | 
						|
AND (@unitId like '%'+P.UnitId+'%' OR @unitId IS NULL)	
 | 
						|
AND (@postId like '%'+P.WorkPostId+'%' OR @postId IS NULL)	
 | 
						|
GROUP BY T.ProjectId,P.UnitId,U.UnitName,u.ShortUnitName,P.WorkPostId,W.WorkPostName
 | 
						|
 | 
						|
 | 
						|
GO
 | 
						|
 | 
						|
 | 
						|
ALTER VIEW [dbo].[View_SitePerson_Person]
 | 
						|
AS
 | 
						|
SELECT Person.PersonId,
 | 
						|
	Person.CardNo,
 | 
						|
	Person.PersonName,
 | 
						|
	Person.Sex, 
 | 
						|
	(Case Person.Sex WHEN '1' THEN '켕' WHEN '2' THEN '큽' ELSE '' END) AS SexName, 
 | 
						|
	Person.IdentityCard, 
 | 
						|
	Person.Address, 
 | 
						|
	Person.ProjectId, 
 | 
						|
	Person.UnitId, 
 | 
						|
	Person.Birthday,
 | 
						|
	Person.TeamGroupId, 
 | 
						|
	Person.WorkAreaId, 
 | 
						|
	Person.WorkPostId, 	
 | 
						|
	Person.InTime, 
 | 
						|
	Person.OutTime, 
 | 
						|
	Person.OutResult, 
 | 
						|
	Person.Telephone, 
 | 
						|
	Person.PositionId, 
 | 
						|
	Person.PostTitleId, 
 | 
						|
	Person.PhotoUrl, 
 | 
						|
	Person.IsUsed,
 | 
						|
	(CASE Person.IsUsed WHEN 'TRUE' THEN '角' ELSE '뤠' END) AS IsUsedName, 
 | 
						|
	Person.IsCardUsed, 
 | 
						|
	(CASE Person.IsCardUsed WHEN 'TRUE' THEN '角' ELSE '뤠' END) AS IsCardUsedName, 
 | 
						|
	Person.PersonIndex,
 | 
						|
	Project.ProjectCode,
 | 
						|
	Project.ProjectName,
 | 
						|
	Unit.UnitCode,
 | 
						|
	Unit.UnitName,
 | 
						|
	TeamGroup.TeamGroupName,
 | 
						|
	--WorkArea.UnitWorkCode AS WorkAreaCode,
 | 
						|
	WorkAreaCode= STUFF((SELECT ',' + UnitWorkCode FROM dbo.WBS_UnitWork where PATINDEX('%,' + RTRIM(UnitWorkId) + ',%',',' +Person.WorkAreaId + ',')>0 FOR XML PATH('')), 1, 1,''),
 | 
						|
	--WorkArea.UnitWorkName AS WorkAreaName
 | 
						|
	WorkAreaName= STUFF((SELECT ',' + UnitWorkName FROM dbo.WBS_UnitWork where PATINDEX('%,' + RTRIM(UnitWorkId) + ',%',',' +Person.WorkAreaId + ',')>0 FOR XML PATH('')), 1, 1,''),
 | 
						|
	Post.WorkPostName,
 | 
						|
	Position.PositionName,
 | 
						|
	Title.PostTitleName,
 | 
						|
	Depart.DepartName,
 | 
						|
	Post.PostType,
 | 
						|
	Post.IsHsse,
 | 
						|
	(SELECT COUNT(*) FROM EduTrain_TrainRecordDetail T WHERE T.PersonId=Person.PersonId) AS TrainCount,
 | 
						|
	Person.AuditorId,
 | 
						|
	sysUser.UserName AS AuditorName,
 | 
						|
	Person.AuditorDate,
 | 
						|
	Person.IDCardUrl,
 | 
						|
	Person.IsForeign,
 | 
						|
	case when Person.IsForeign=1 then '角' else '뤠' end as IsForeignStr,
 | 
						|
	Person.IdcardType,
 | 
						|
	BasicData1.dictName as IdcardTypeName,
 | 
						|
	Person.IdcardStartDate,
 | 
						|
	Person.IdcardEndDate,
 | 
						|
	Person.IdcardForever,
 | 
						|
	case when Person.IdcardForever='Y' then '角' else '뤠' end as IdcardForeverStr,
 | 
						|
	Person.PoliticsStatus,
 | 
						|
	BasicData2.dictName as PoliticsStatusName,
 | 
						|
	Person.IdcardAddress,
 | 
						|
	Person.Nation,
 | 
						|
	BasicData3.dictName as NationName,
 | 
						|
	Person.EduLevel,
 | 
						|
	BasicData4.dictName as EduLevelName,
 | 
						|
	Person.MaritalStatus,
 | 
						|
	BasicData5.dictName as MaritalStatusName,
 | 
						|
	Person.CountryCode,
 | 
						|
	Country.cname as CountryName,
 | 
						|
	Person.ProvinceCode,
 | 
						|
	City.cname as ProvinceName,
 | 
						|
	Person.MainCNProfessionalId,
 | 
						|
	CNProfessional.ProfessionalName as MainCNProfessionalName,
 | 
						|
	Person.ViceCNProfessionalId,
 | 
						|
	'' as ViceCNProfessionalName,
 | 
						|
	Person.IsOutside,
 | 
						|
	case when Person.IsOutside=1 then '角' else '뤠' end as IsOutsideStr,
 | 
						|
	Person.HeadImage,
 | 
						|
	RealNameAddTime
 | 
						|
FROM SitePerson_Person AS Person
 | 
						|
LEFT JOIN Base_Project AS Project ON Project.ProjectId=Person.ProjectId
 | 
						|
LEFT JOIN Base_Unit AS Unit ON Unit.UnitId = Person.UnitId
 | 
						|
LEFT JOIN ProjectData_TeamGroup AS TeamGroup ON TeamGroup.TeamGroupId=Person.TeamGroupId
 | 
						|
--LEFT JOIN WBS_UnitWork AS WorkArea ON WorkArea.UnitWorkId = Person.WorkAreaId
 | 
						|
LEFT JOIN Base_WorkPost AS Post ON Post.WorkPostId = Person.WorkPostId
 | 
						|
LEFT JOIN Base_Position AS Position ON Position.PositionId = Person.PositionId
 | 
						|
Left JOIN Base_PostTitle AS Title ON Title.PostTitleId = Person.PostTitleId
 | 
						|
Left JOIN Base_Depart AS Depart ON Depart.DepartId = Person.DepartId
 | 
						|
Left JOIN Sys_User AS sysUser ON sysUser.UserId = Person.AuditorId
 | 
						|
Left JOIN RealName_BasicData AS BasicData1 ON BasicData1.dictCode = Person.IdcardType
 | 
						|
Left JOIN RealName_BasicData AS BasicData2 ON BasicData2.dictCode = Person.PoliticsStatus
 | 
						|
Left JOIN RealName_BasicData AS BasicData3 ON BasicData3.dictCode = Person.Nation
 | 
						|
Left JOIN RealName_BasicData AS BasicData4 ON BasicData4.dictCode = Person.EduLevel
 | 
						|
Left JOIN RealName_BasicData AS BasicData5 ON BasicData5.dictCode = Person.MaritalStatus
 | 
						|
Left JOIN RealName_Country AS Country ON Country.CountryId = Person.CountryCode
 | 
						|
Left JOIN RealName_City AS City ON City.provinceCode = Person.ProvinceCode AND Country.CountryId=City.countryId
 | 
						|
Left JOIN Base_CNProfessional AS CNProfessional ON CNProfessional.CNProfessionalId = Person.MainCNProfessionalId
 | 
						|
 | 
						|
 | 
						|
GO
 | 
						|
 | 
						|
 | 
						|
 | 
						|
 |