YD_Event.Admin/二期需求/20260915_fix_wire_project_rule_mapping.sql

52 lines
1.6 KiB
Transact-SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

/*
修复 2人/3人交互绳基础项目误绑定旧空规则的问题。
- 可重复执行。
- 修正基础项目,确保后续新建场次继承 ROPE_FREESTYLE_WIRE。
- 对尚未开始且没有评分单的既有场次同步修正;已开赛或已有评分历史的场次不自动改写。
*/
SET XACT_ABORT ON;
BEGIN TRANSACTION;
DECLARE @WireRuleId BIGINT = (
SELECT TOP 1 Id
FROM dbo.ScoreRule
WHERE RuleCode=N'ROPE_FREESTYLE_WIRE' AND DeleteMark=0
ORDER BY Id
);
IF @WireRuleId IS NULL
THROW 51012,N'未找到交互绳花样计分规则(ROPE_FREESTYLE_WIRE)。',1;
IF NOT EXISTS (
SELECT 1 FROM dbo.ScoreRuleItem
WHERE ScoreRuleId=@WireRuleId AND DeleteMark=0
)
THROW 51013,N'交互绳花样计分规则没有可用评分项,拒绝更新项目映射。',1;
UPDATE dbo.Project
SET ScoreRuleId=@WireRuleId,
UpdatedUserId=1000,
UpdatedTime=SYSUTCDATETIME()
WHERE Name IN (N'2人交互绳',N'3人交互绳')
AND DeleteMark=0
AND ISNULL(ScoreRuleId,0)<>@WireRuleId;
UPDATE s
SET ScoreRuleId=@WireRuleId,
Version=Version+1,
UpdatedUserId=1000,
UpdatedTime=SYSUTCDATETIME()
FROM dbo.EventSession s
JOIN dbo.EventProject ep ON ep.Id=s.EventProjectId AND ep.DeleteMark=0
JOIN dbo.Project p ON p.Id=ep.ProjectId AND p.DeleteMark=0
WHERE p.Name IN (N'2人交互绳',N'3人交互绳')
AND s.DeleteMark=0
AND s.SessionStatus IN (0,10,20)
AND s.ScoreRuleId<>@WireRuleId
AND NOT EXISTS (
SELECT 1 FROM dbo.EventJudgeScoreSheet sheet
WHERE sheet.SessionId=s.Id AND sheet.DeleteMark=0
);
COMMIT TRANSACTION;