fix(scoring): correct wire project rule mapping
This commit is contained in:
parent
bf2f6cfda7
commit
5114a6cb9f
51
二期需求/20260915_fix_wire_project_rule_mapping.sql
Normal file
51
二期需求/20260915_fix_wire_project_rule_mapping.sql
Normal file
@ -0,0 +1,51 @@
|
||||
/*
|
||||
修复 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;
|
||||
@ -1015,6 +1015,15 @@ BEGIN TRY
|
||||
IF EXISTS(SELECT 1 FROM #ItemSeed s JOIN #RuleMap m ON m.SourceId=s.SourceRuleId WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRuleItem i WHERE i.ScoreRuleId=m.TargetId AND i.JudgeRoleType=s.JudgeRoleType AND i.ItemCode=s.ItemCode AND i.DeleteMark=0))
|
||||
THROW 51004,N'计分规则明细种子ID被占用且业务键不存在,无法安全初始化。',1;
|
||||
|
||||
/* 4.2.1 交互绳基础项目必须绑定交互绳规则,避免新编排场次继承到无评分项的旧规则。 */
|
||||
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;
|
||||
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;
|
||||
|
||||
/* 4.3 角色:Id=1003 “打分系统单位(scoringunit)”;若该Id被其他编码占用则报错终止 */
|
||||
IF EXISTS(SELECT 1 FROM dbo.SysRole WHERE Id=1003 AND Code<>N'scoringunit') THROW 51005,N'SysRole.Id=1003 已被其他角色占用。',1;
|
||||
IF NOT EXISTS(SELECT 1 FROM dbo.SysRole WHERE Id=1003)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user