2026-09-14 15:58:12 +08:00
CREATE OR ALTER PROCEDURE [ dbo ] . [ SP_SANKU_DATA_INIT ]
@type VARCHAR ( 100 ) = NULL ,
@op TINYINT
AS
BEGIN
SET NOCOUNT ON ;
DECLARE @trimType VARCHAR ( 100 ) = LTRIM ( RTRIM ( ISNULL ( @type , ' ' ) ) ) ;
-- op=0 清空逻辑
IF @op = 0
BEGIN
IF @trimType = ' SANKU_ACCIDENT_RECORD '
BEGIN
TRUNCATE TABLE SANKU_ACCIDENT_RECORD ;
END
ELSE IF @trimType = ' SANKU_VIOLATION '
BEGIN
TRUNCATE TABLE SANKU_VIOLATION ;
END
ELSE IF @trimType = ' SANKU_HAZARD '
BEGIN
TRUNCATE TABLE SANKU_HAZARD ;
END
ELSE IF @trimType = ' SANKU_SAFETY_REWARD '
BEGIN
TRUNCATE TABLE SANKU_SAFETY_REWARD ;
END
ELSE IF @trimType = ' SANKU_ADMIN_PENALTY '
BEGIN
TRUNCATE TABLE SANKU_ADMIN_PENALTY ;
END
ELSE IF @trimType = ' SANKU_TRAINING '
BEGIN
TRUNCATE TABLE SANKU_TRAINING ;
END
ELSE IF @trimType = ' SANKU_EXAMINATION '
BEGIN
TRUNCATE TABLE SANKU_EXAMINATION ;
END
ELSE IF @trimType = ' SANKU_DANGEROUS_ENGINEERING '
BEGIN
TRUNCATE TABLE SANKU_DANGEROUS_ENGINEERING ;
END
ELSE IF @trimType = ' SANKU_GRID_PATROL '
BEGIN
TRUNCATE TABLE SANKU_GRID_PATROL ;
END
ELSE IF @trimType = ' ' -- type null/空,全部清空
BEGIN
TRUNCATE TABLE SANKU_ACCIDENT_RECORD ;
TRUNCATE TABLE SANKU_VIOLATION ;
TRUNCATE TABLE SANKU_HAZARD ;
TRUNCATE TABLE SANKU_SAFETY_REWARD ;
TRUNCATE TABLE SANKU_ADMIN_PENALTY ;
TRUNCATE TABLE SANKU_TRAINING ;
TRUNCATE TABLE SANKU_EXAMINATION ;
TRUNCATE TABLE SANKU_DANGEROUS_ENGINEERING ;
TRUNCATE TABLE SANKU_GRID_PATROL ;
END
END
-- op=1 初始化插入逻辑
IF @op = 1
BEGIN
-- type为NULL/空字符串:所有初始化脚本都执行;否则按type分支执行
IF @type = ' SANKU_ACCIDENT_RECORD ' OR @trimType = ' '
BEGIN
--事故事件数据初始化
INSERT INTO SANKU_ACCIDENT_RECORD ( ACCIDENT_ID , PROJECT_CODE , PROJECT_NAME , ACCIDENT_NAME , ACCIDENT_TIME , ACCIDENT_LEVEL , ACCIDENT_TYPE , ACCIDENT_LOCATION , ACCIDENT_DESCRIPTION , DEATH_COUNT , SERIOUS_INJURY_COUNT , MINOR_INJURY_COUNT
, DIRECT_ECONOMIC_LOSS , INDIRECT_ECONOMIC_LOSS , CONTRACTING_RESPONSIBILITY , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , POSITION_NAME , RESPONSIBILITY_TYPE , RESPONSIBILITY_DESC , PERSONNEL_ID_NUMBER , PERSONNEL_NAME , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
SELECT tba . AccidentHandleId , pms . pro_code , pms . pro_name , tba . AccidentHandleName , tba . AccidentDate , tba . AccidentLevel , tba . AccidentType , tba . AccidentLocation , tba . AccidentDef , tba . DeathPersonNum , tba . InjuriesPersonNum , tba . MinorInjuriesPersonNum
, tba . MoneyLoss , tba . IndirectMoneyLoss , tba . ContractingResponsibility
, bu . MasterAdOrgCode , bu . CollCropCode , CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
, tba . PositionName , tba . ResponsibilityType , tba . ResponsibilityDesc , su . IdentityCard , tba . ResponsibleManName , suc . IdentityCard , suc . UserName , tba . CompileDate , tba . CompileDate
FROM Accident_AccidentHandle AS tba WITH ( NOLOCK )
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = tba . UnitId --AND LEN(bu.CollCropCode)=18
LEFT JOIN Sys_User AS su WITH ( NOLOCK ) ON su . UserId = tba . ResponsibleMan
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tba . CompileMan
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tba . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
WHERE bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL AND tba . AccidentDate >= ' 2026-01-01 '
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND LEN ( suc . IdentityCard ) = 18 AND LEN ( su . IdentityCard ) = 18
AND tba . AccidentHandleId NOT IN ( SELECT ACCIDENT_ID FROM SANKU_ACCIDENT_RECORD WITH ( NOLOCK ) ) ;
END
IF @type = ' SANKU_VIOLATION ' OR @trimType = ' '
BEGIN
--违章作业数据初始化
INSERT INTO SANKU_VIOLATION ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , PERSONNEL_ID_NUMBER , PERSONNEL_NAME , VIOLATION_DATE , VIOLATION_TYPE , VIOLATION_CONTENT , PENALTY_RESULT , RECTIFICATION_STATUS , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
SELECT tba . ViolationPersonId , pms . pro_code , pms . pro_name
, bu . MasterAdOrgCode , bu . CollCropCode , CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
, spp . IdentityCard , spp . PersonName , tba . ViolationDate , tba . ViolationLevel , tba . ViolationDef , vphs . ConstText , tba . RectificationStatus , suc . IdentityCard , suc . UserName , tba . CompileDate , tba . CompileDate
FROM Check_ViolationPerson AS tba WITH ( NOLOCK )
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = tba . UnitId --AND LEN(bu.CollCropCode)=18
LEFT JOIN Sys_Const AS vphs WITH ( NOLOCK ) ON vphs . ConstValue = tba . HandleStep AND vphs . GroupId = ' ViolationPersonHandleStep '
LEFT JOIN SitePerson_Person AS spp WITH ( NOLOCK ) ON spp . PersonId = tba . PersonId AND LEN ( spp . IdentityCard ) = 18
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tba . CompileMan
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tba . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
WHERE bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL AND tba . ViolationDate >= ' 2026-01-01 '
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND LEN ( suc . IdentityCard ) = 18 AND LEN ( spp . IdentityCard ) = 18
AND tba . ViolationPersonId NOT IN ( SELECT RECORD_ID FROM SANKU_VIOLATION WITH ( NOLOCK ) ) ;
END
IF @type = ' SANKU_SAFETY_REWARD ' OR @trimType = ' '
BEGIN
--安全奖惩数据初始化
INSERT INTO SANKU_SAFETY_REWARD ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , PERSONNEL_ID_NUMBER , PERSONNEL_NAME , REWARD_DATE , REWARD_UNIT_ID , REWARD_UNIT_CODE , REWARD_UNIT_NAME , REWARD_TYPE , REWARD_CONTENT , REWARD_AMOUNT , REWARD_LEVEL , SUBMITTER_ID_NUMBER , SUBMITTER_NAME )
SELECT tba . RewardAndPunishID , pms . pro_code , pms . pro_name , spp . IdentityCard , spp . PersonName , tba . Date
, bu . MasterAdOrgCode , bu . CollCropCode , CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
, ( CASE tba . Type WHEN 1 THEN ' 奖励 ' WHEN 2 THEN ' 处罚 ' ELSE ' 处罚 ' END ) AS TYPE , tba . Description
, ( CASE WHEN tba . Type = 1 THEN ABS ( tba . Money ) WHEN tba . Type = 2 THEN - ABS ( tba . Money ) ELSE tba . Money END ) AS Money
, ( CASE tba . Type
WHEN 1 THEN ( SELECT ConstText FROM Sys_Const WHERE GroupId = ' RewardType ' AND ConstValue = tba . RewardAndPunishType )
WHEN 2 THEN ( SELECT ConstText FROM Sys_Const WHERE GroupId = ' PunishType ' AND ConstValue = tba . RewardAndPunishType ) END ) AS TYPE
, suc . IdentityCard , suc . UserName
FROM Check_RewardAndPunish AS tba WITH ( NOLOCK )
LEFT JOIN SitePerson_Person AS spp WITH ( NOLOCK ) ON spp . PersonId = tba . RewardAndPunishMan --AND LEN(spp.IdentityCard)=18
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = tba . ResponseUnit --AND LEN(bu.CollCropCode)=18
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tba . CreateMan
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tba . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
WHERE bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL AND tba . Date >= ' 2026-01-01 ' AND tba . Type IN ( 1 , 2 )
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND LEN ( spp . IdentityCard ) = 18 AND LEN ( suc . IdentityCard ) = 18
AND tba . RewardAndPunishID NOT IN ( SELECT RECORD_ID FROM SANKU_SAFETY_REWARD WITH ( NOLOCK ) ) ;
END
IF @type = ' SANKU_SAFETY_REWARD ' OR @trimType = ' '
BEGIN
--行政处罚数据初始化
INSERT INTO SANKU_ADMIN_PENALTY ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , PENALTY_DATE , PENALTY_TYPE , PENALTY_CONTENT , PENALTY_AMOUNT , PENALTY_AUTHORITY , PENALTY_STATUS , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
SELECT tba . PenaltyId , pms . pro_code , pms . pro_name
, bu . MasterAdOrgCode , bu . CollCropCode , CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
, tba . PenaltyDate , tba . PenaltyType , tba . PenaltyContent , tba . PenaltyAmount , tba . PenaltyAuthority , tba . PenaltyStatus
, suc . IdentityCard , suc . UserName , tba . PenaltyDate , tba . PenaltyDate
FROM Check_AdminPenalty AS tba WITH ( NOLOCK )
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = tba . UnitId --AND LEN(bu.CollCropCode)=18
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tba . CompileMan
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tba . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
WHERE bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL AND tba . PenaltyDate >= ' 2026-01-01 '
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND LEN ( suc . IdentityCard ) = 18
AND tba . PenaltyId NOT IN ( SELECT RECORD_ID FROM SANKU_ADMIN_PENALTY WITH ( NOLOCK ) ) ;
END
IF @type = ' SANKU_HAZARD ' OR @trimType = ' '
BEGIN
--隐患记录数据初始化
INSERT INTO SANKU_HAZARD ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , RESPONSIBLE_PERSONNEL_ID_NUMBER , RESPONSIBLE_PERSONNEL_NAME , RECTIFIER_PERSONNEL_ID_NUMBER , RECTIFIER_PERSONNEL_NAME
, DISCOVERY_DATE , HAZARD_TYPE , HAZARD_LEVEL , HAZARD_CONTENT , RECTIFICATION_STATUS , RECTIFICATION_DEADLINE_ID , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
2026-09-15 17:50:46 +08:00
SELECT tba . HazardRegisterId , pms . pro_code , pms . pro_name
2026-09-14 15:58:12 +08:00
, bu . MasterAdOrgCode , bu . CollCropCode , CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
2026-09-15 17:50:46 +08:00
, suzg . IdentityCard , suzg . UserName , suzg . IdentityCard , suzg . UserName , tba . CheckTime , regType . RegisterTypesName
, ( CASE tba . Risk_Level WHEN ' 一般 ' THEN ' 一般隐患 ' WHEN ' 较大 ' THEN ' 较大隐患 ' WHEN ' 重大 ' THEN ' 重大隐患 ' ELSE ' 一般隐患 ' END ) AS TYPE , tba . RegisterDef
, ( CASE tba . States WHEN 1 THEN ' 未整改 ' WHEN 2 THEN ' 已验收 ' WHEN 3 THEN ' 已整改 ' WHEN 4 THEN ' 整改中 ' ELSE ' 整改中 ' END ) AS StatesName
, tba . RectificationPeriod , suc . IdentityCard , suc . UserName , tba . CheckTime , tba . CheckTime
FROM HSSE_Hazard_HazardRegister AS tba WITH ( NOLOCK )
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = tba . ResponsibleUnit --AND LEN(bu.CollCropCode)=18
LEFT JOIN Sys_User AS suzg WITH ( NOLOCK ) ON suzg . UserId = tba . ResponsibleMan
LEFT JOIN HSSE_Hazard_HazardRegisterTypes AS regType WITH ( NOLOCK ) ON tba . RegisterTypesId = regType . RegisterTypesId
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tba . CheckManId
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tba . ProjectId
2026-09-14 15:58:12 +08:00
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
2026-09-15 17:50:46 +08:00
WHERE bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL AND tba . CheckTime >= ' 2026-01-01 ' AND ISNULL ( tba . States , 0 ) >= 0
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND LEN ( suc . IdentityCard ) = 18 AND LEN ( suzg . IdentityCard ) = 18 AND regType . RegisterTypesName IS NOT NULL
AND tba . HazardRegisterId NOT IN ( SELECT RECORD_ID FROM SANKU_HAZARD WITH ( NOLOCK ) ) ;
----隐患记录数据初始化
--INSERT INTO SANKU_HAZARD(RECORD_ID,PROJECT_CODE,PROJECT_NAME,SUBCONTRACTOR_ID,SUBCONTRACTOR_CODE,SUBCONTRACTOR_NAME,RESPONSIBLE_PERSONNEL_ID_NUMBER,RESPONSIBLE_PERSONNEL_NAME,RECTIFIER_PERSONNEL_ID_NUMBER,RECTIFIER_PERSONNEL_NAME
-- ,DISCOVERY_DATE,HAZARD_TYPE,HAZARD_LEVEL,HAZARD_CONTENT,RECTIFICATION_STATUS,RECTIFICATION_DEADLINE_ID,SUBMITTER_ID_NUMBER,SUBMITTER_NAME,UPDATE_TIME,CREATE_TIME)
--SELECT tba.RectifyNoticesItemId,pms.pro_code,pms.pro_name
-- ,bu.MasterAdOrgCode,bu.CollCropCode,CASE WHEN bu.MasterAdOrgCode IS NULL OR LTRIM(RTRIM(bu.MasterAdOrgCode)) = '' THEN bu.UnitName ELSE bu.MasterAdOrgName END AS UnitName
-- ,suzg.IdentityCard,suzg.UserName,suzg.IdentityCard,suzg.UserName,tbb.CheckedDate,rectify.RectifyName
-- ,(CASE tbb.HiddenHazardType WHEN 1 THEN '一般隐患' WHEN 2 THEN '较大隐患' WHEN 3 THEN '重大隐患' ELSE '一般隐患' END) AS TYPE,tba.WrongContent
-- ,(CASE WHEN tbb.States = 2 THEN '未整改' WHEN tbb.States = 3 THEN '整改中' WHEN States = 4 THEN '已整改' WHEN States = 5 THEN '已验收' ELSE '未整改' END) AS StatesName
-- ,tba.LimitTime,suc.IdentityCard,suc.UserName,tbb.CheckedDate,tbb.CheckedDate
--FROM Check_RectifyNoticesItem AS tba WITH(NOLOCK)
-- LEFT JOIN Check_RectifyNotices AS tbb WITH(NOLOCK) ON tbb.RectifyNoticesId = tba.RectifyNoticesId
-- --LEFT JOIN Check_RectifyNoticesFlowOperate AS tbc WITH(NOLOCK) ON tbc.RectifyNoticesId = tba.RectifyNoticesId
-- LEFT JOIN Base_Unit AS bu WITH(NOLOCK) ON bu.UnitId = tbb.UnitId --AND LEN(bu.CollCropCode)=18
-- LEFT JOIN Sys_User AS suzg WITH(NOLOCK) ON suzg.UserId = tbb.DutyPersonId
-- LEFT JOIN Sys_User AS suc WITH(NOLOCK) ON suc.UserId = tbb.CompleteManId
-- LEFT JOIN Base_Project AS bp WITH(NOLOCK) ON bp.ProjectId = tbb.ProjectId
-- LEFT JOIN ads_pms_pro_info_build AS pms WITH(NOLOCK) ON pms.pro_id = bp.MasterSysId
-- LEFT JOIN Technique_Rectify AS rectify WITH(NOLOCK) ON tba.RectifyId = rectify.RectifyId
--WHERE bp.MasterSysId IS NOT NULL AND pms.pro_code IS NOT NULL AND tbb.CheckedDate>='2026-01-01' AND tbb.States > 1
-- AND (bu.MasterAdOrgCode IS NOT NULL OR LEN(bu.CollCropCode)=18) AND LEN(suc.IdentityCard)=18 AND LEN(suzg.IdentityCard)=18 AND rectify.RectifyName IS NOT NULL
-- AND tba.RectifyNoticesItemId NOT IN (SELECT RECORD_ID FROM SANKU_HAZARD WITH(NOLOCK));
2026-09-14 15:58:12 +08:00
END
IF @type = ' SANKU_TRAINING ' OR @trimType = ' '
BEGIN
--教育培训数据初始化
INSERT INTO SANKU_TRAINING ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , PERSONNEL_ID_NUMBER , PERSONNEL_NAME , TRAINING_DATE , TRAINING_NAME , TRAINING_TYPE , TRAINING_DURATION , TRAINING_ORGANIZER , TRAINING_CONTENT , TRAINING_RESULT , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
SELECT tba . TrainDetailId , pms . pro_code , pms . pro_name
, spu . MasterAdOrgCode , spu . CollCropCode , CASE WHEN spu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( spu . MasterAdOrgCode ) ) = ' ' THEN spu . UnitName ELSE spu . MasterAdOrgName END AS UnitName
, spp . IdentityCard , spp . PersonName , tbb . TrainStartDate
, ( CASE WHEN ISNULL ( tbb . TrainTitle , ' ' ) = ' ' THEN bty . TrainTypeName ELSE tbb . TrainTitle END ) AS TrainName
, bty . TrainTypeName , tbb . TeachHour , bu . UnitName
, ( CASE WHEN ISNULL ( tbb . TrainContent , ' ' ) = ' ' THEN bty . TrainTypeName ELSE tbb . TrainContent END ) AS TrainContent
, ( CASE WHEN tba . CheckResult = 1 THEN ' 通过 ' WHEN tba . CheckResult = 0 THEN ' 未通过 ' ELSE ' 缺考 ' END ) AS CheckResult
, suc . IdentityCard , suc . UserName , tbb . TrainStartDate , tbb . TrainStartDate
FROM EduTrain_TrainRecordDetail AS tba WITH ( NOLOCK )
LEFT JOIN EduTrain_TrainRecord AS tbb WITH ( NOLOCK ) ON tbb . TrainingId = tba . TrainingId
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = tbb . UnitIds --AND LEN(bu.CollCropCode)=18
LEFT JOIN SitePerson_Person AS spp WITH ( NOLOCK ) ON spp . PersonId = tba . PersonId
LEFT JOIN Base_Unit AS spu WITH ( NOLOCK ) ON spu . UnitId = spp . UnitId --AND LEN(spu.CollCropCode)=18
LEFT JOIN Base_TrainType AS bty WITH ( NOLOCK ) ON bty . TrainTypeId = tbb . TrainTypeId
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tbb . CompileMan
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tbb . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
WHERE tbb . TrainStartDate >= ' 2026-01-01 ' AND LEN ( suc . IdentityCard ) = 18 AND LEN ( spp . IdentityCard ) = 18
AND ( spu . MasterAdOrgCode IS NOT NULL OR LEN ( spu . CollCropCode ) = 18 ) AND bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL
AND tba . TrainDetailId NOT IN ( SELECT RECORD_ID FROM SANKU_TRAINING WITH ( NOLOCK ) ) ;
END
IF @type = ' SANKU_EXAMINATION ' OR @trimType = ' '
BEGIN
--考试考核数据初始化
INSERT INTO SANKU_EXAMINATION ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , PERSONNEL_ID_NUMBER , PERSONNEL_NAME , EXAM_DATE , EXAM_NAME , EXAM_TYPE , EXAM_SCORE , EXAM_RESULT , EXAM_ORGANIZER , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
SELECT tba . TestRecordId , pms . pro_code , pms . pro_name
, bu . MasterAdOrgCode , bu . CollCropCode , CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
, spp . IdentityCard , spp . PersonName , tbb . TestEndTime , tbb . PlanName , ' 理论考试 ' , tba . TestScores
, ( CASE WHEN tba . TestScores = 0 THEN ' 缺考 ' WHEN tba . TestScores >= 80 THEN ' 通过 ' WHEN tba . TestScores < 80 THEN ' 未通过 ' ELSE ' 缺考 ' END ) AS CheckResult , tbb . UnitNames
, suc . IdentityCard , suc . UserName , tbb . TestEndTime , tbb . TestEndTime
FROM Training_TestRecord AS tba WITH ( NOLOCK )
LEFT JOIN Training_TestPlan AS tbb WITH ( NOLOCK ) ON tbb . TestPlanId = tba . TestPlanId
LEFT JOIN SitePerson_Person AS spp WITH ( NOLOCK ) ON spp . PersonId = tba . TestManId
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = spp . UnitId --AND LEN(bu.CollCropCode)=18
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tbb . PlanManId
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tbb . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
WHERE tbb . TestEndTime >= ' 2026-01-01 ' AND LEN ( suc . IdentityCard ) = 18 AND LEN ( spp . IdentityCard ) = 18
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL
AND tba . TestRecordId NOT IN ( SELECT RECORD_ID FROM SANKU_EXAMINATION WITH ( NOLOCK ) ) ;
END
IF @type = ' SANKU_DANGEROUS_ENGINEERING ' OR @trimType = ' '
BEGIN
--危大工程数据初始化
INSERT INTO SANKU_DANGEROUS_ENGINEERING ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , ENGINEERING_DATE , ENGINEERING_NAME , ENGINEERING_TYPE , ENGINEERING_ADDRESS , ENGINEERING_DESC , STANDBY_PERSONNEL_ID_NUMBER , STANDBY_PERSONNEL_NAME , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
SELECT tba . HazardId , pms . pro_code , pms . pro_name
, bu . MasterAdOrgCode , bu . CollCropCode , CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
, ISNULL ( tba . ExpectedTime , GETDATE ( ) ) AS ExpectedTime , tba . HazardName , sc . ConstText , tba . Address , tba . Descriptions , spp . IdentityCard , spp . PersonName , suc . IdentityCard , suc . UserName , tba . RecordTime , tba . RecordTime
FROM Solution_LargerHazard AS tba WITH ( NOLOCK )
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = tba . UnitId --AND LEN(bu.CollCropCode)=18
LEFT JOIN SitePerson_Person AS spp WITH ( NOLOCK ) ON spp . PersonId = tba . StandbyPersonnelId
LEFT JOIN Sys_Const AS sc WITH ( NOLOCK ) ON sc . GroupId = ' LargerHazardType ' AND sc . ConstValue = tba . HazardType
LEFT JOIN Sys_User AS suc WITH ( NOLOCK ) ON suc . UserId = tba . RecardMan
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tba . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
WHERE tba . RecordTime >= ' 2026-01-01 ' AND LEN ( suc . IdentityCard ) = 18 AND LEN ( spp . IdentityCard ) = 18
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL
AND tba . HazardId NOT IN ( SELECT RECORD_ID FROM SANKU_DANGEROUS_ENGINEERING WITH ( NOLOCK ) ) ;
END
IF @type = ' SANKU_GRID_PATROL ' OR @trimType = ' '
BEGIN
--网格化巡查记录数据初始化
WITH temp_data AS (
SELECT
tba . HazardRegisterId , pms . pro_code , pms . pro_name , bu . MasterAdOrgCode , bu . CollCropCode
, CASE WHEN bu . MasterAdOrgCode IS NULL OR LTRIM ( RTRIM ( bu . MasterAdOrgCode ) ) = ' ' THEN bu . UnitName ELSE bu . MasterAdOrgName END AS UnitName
, suzg . IdentityCard AS pNumber , suzg . UserName AS pUser , tba . CheckTime , ' 已完成 ' AS StatusStr , suzg . IdentityCard , suzg . UserName , tba . CheckTime AS UpdateTime , tba . CheckTime AS CreateTime ,
ROW_NUMBER ( ) OVER (
PARTITION BY tba . CheckManId , CAST ( tba . CheckTime AS DATE )
ORDER BY tba . CheckTime ASC
) AS rn
FROM HSSE_Hazard_HazardRegister AS tba WITH ( NOLOCK )
LEFT JOIN Base_Project AS bp WITH ( NOLOCK ) ON bp . ProjectId = tba . ProjectId
LEFT JOIN ads_pms_pro_info_build AS pms WITH ( NOLOCK ) ON pms . pro_id = bp . MasterSysId
LEFT JOIN Sys_User AS suzg WITH ( NOLOCK ) ON suzg . UserId = tba . CheckManId
LEFT JOIN Base_Unit AS bu WITH ( NOLOCK ) ON bu . UnitId = suzg . UnitId --AND LEN(bu.CollCropCode)=18
WHERE bp . MasterSysId IS NOT NULL AND pms . pro_code IS NOT NULL AND tba . CheckTime >= ' 2026-01-01 '
AND ( bu . MasterAdOrgCode IS NOT NULL OR LEN ( bu . CollCropCode ) = 18 ) AND LEN ( suzg . IdentityCard ) = 18
)
--网格化巡查记录数据初始化
INSERT INTO SANKU_GRID_PATROL ( RECORD_ID , PROJECT_CODE , PROJECT_NAME , SUBCONTRACTOR_ID , SUBCONTRACTOR_CODE , SUBCONTRACTOR_NAME , PERSONNEL_ID_NUMBER , PERSONNEL_NAME , PATROL_TIME , PATROL_STATUS , SUBMITTER_ID_NUMBER , SUBMITTER_NAME , UPDATE_TIME , CREATE_TIME )
SELECT HazardRegisterId , pro_code , pro_name , MasterAdOrgCode , CollCropCode , UnitName , pNumber , pUser , CheckTime , StatusStr , IdentityCard , UserName , UpdateTime , CreateTime
FROM temp_data
WHERE rn = 1 AND HazardRegisterId NOT IN ( SELECT RECORD_ID FROM SANKU_GRID_PATROL WITH ( NOLOCK ) ) ;
END
END
END
GO