1608 lines
215 KiB
Transact-SQL
1608 lines
215 KiB
Transact-SQL
/*
|
||
========================================================================================
|
||
YD_Event 二期生产环境部署脚本
|
||
版本:3.1 | 基线提交:25830581d2add95f2d659e663f3d78b766ce0946
|
||
数据库:Microsoft SQL Server 2016+(兼容级别 130+)
|
||
|
||
执行示例:
|
||
sqlcmd -S <server> -d <database> -E -b -i Phase2_Production_Deployment.sql
|
||
|
||
设计原则:单事务、失败全回滚、可重复执行、最小权限、执行后强校验。
|
||
注意:本脚本不创建 SQL Login、不保存密码,仅创建数据库角色并授予对象权限。
|
||
|
||
事务内执行顺序(严格按“先新增表 → 后更改表结构 → 最后插入数据”组织,便于维护):
|
||
[1/9] 新增表 :创建二期 19 张业务表(只引用一期主键,故最先执行)
|
||
[2/9] 改表结构 :为一期已有表补充二期所需列
|
||
[3/9] 改表结构 :CHECK 约束、外键、索引
|
||
[4/9] 插入数据 :计分规则/规则明细/角色/菜单等种子(幂等:存在则更新,缺失才插入)
|
||
[5/9] 编程对象 :函数、视图、存储过程
|
||
[6/9] 权限 :最小权限数据库角色与授权
|
||
[7/9] 后置校验 :对象/列/种子/权限强校验,失败整体回滚
|
||
[8/9] 部署摘要 :输出本次部署统计
|
||
[9/9] 提交事务 :全部成功后 COMMIT,出错由 CATCH 完整回滚
|
||
========================================================================================
|
||
*/
|
||
|
||
SET NOCOUNT ON;
|
||
SET XACT_ABORT ON;
|
||
SET ANSI_NULLS ON;
|
||
SET QUOTED_IDENTIFIER ON;
|
||
|
||
BEGIN TRY
|
||
BEGIN TRANSACTION;
|
||
DECLARE @LockResult INT;
|
||
EXEC @LockResult=sys.sp_getapplock @Resource=N'YD_Event_Phase2_Production_Deployment',@LockMode='Exclusive',@LockOwner='Transaction',@LockTimeout=10000;
|
||
IF @LockResult<0 THROW 51002,N'无法取得二期部署排他锁,可能有另一个部署正在执行。',1;
|
||
|
||
/* EventScoreCorrection:同时支持后台账号与裁判账号发起修正。 */
|
||
IF OBJECT_ID(N'dbo.EventScoreCorrection','U') IS NOT NULL AND COL_LENGTH(N'dbo.EventScoreCorrection', N'ApplyRefereeId') IS NULL
|
||
ALTER TABLE dbo.EventScoreCorrection ADD ApplyRefereeId BIGINT NULL;
|
||
IF OBJECT_ID(N'dbo.EventScoreCorrection','U') IS NOT NULL AND EXISTS (
|
||
SELECT 1 FROM sys.columns WHERE object_id=OBJECT_ID(N'dbo.EventScoreCorrection') AND name=N'ApplyUserId' AND is_nullable=0
|
||
)
|
||
ALTER TABLE dbo.EventScoreCorrection ALTER COLUMN ApplyUserId BIGINT NULL;
|
||
|
||
/* ====================================================================================
|
||
[1/9] 新增表 · 创建二期业务表(共 19 张;IF OBJECT_ID 判空,可重复执行)
|
||
说明:新表外键只引用一期已有表主键(Id),不依赖 [2/9] 新增列,因此置于“改表结构”之前。
|
||
表清单(按业务域):
|
||
裁判库 :Referee / RefereeApplication / EventReferee
|
||
检录 :CheckinTask / CheckinRecord
|
||
编排场次:EventVenue / EventSession / EventSessionEntry / EventSessionEntryRematch
|
||
评分 :EventJudgeAssignment / EventJudgeTask / EventJudgeMessage / EventJudgeScoreSheet / EventJudgeScoreDetail
|
||
计分规则:ScoreRule / ScoreRuleItem
|
||
成绩 :EventResultVersion / EventScoreCorrection / EventResultScreenCast
|
||
公共字段:Status(0启用/1禁用)、DeleteMark(软删除)、CreatedUserId/CreatedTime、UpdatedUserId/UpdatedTime;字段行尾 -- 后为中文注释
|
||
==================================================================================== */
|
||
PRINT N'[1/9] 新增表:创建二期业务表';
|
||
/* RefereeApplication:裁判通过小程序报名执裁及审核状态。 */
|
||
IF OBJECT_ID(N'dbo.[RefereeApplication]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[RefereeApplication] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_RefereeApplication] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id(EventInfo.Id)
|
||
[RefereeUserId] BIGINT NOT NULL, -- 报名执裁的小程序用户Id(AppUser.Id,账户角色为裁判)
|
||
[ApplicationStatus] INT NOT NULL CONSTRAINT [DF_RefereeApplication_ApplicationStatus] DEFAULT (1), -- 报名状态:1-处理中(历史数据),2-报名成功,3-报名失败,4-已取消
|
||
[Remark] NVARCHAR(512) NULL, -- 备注
|
||
[Status] INT NOT NULL CONSTRAINT [DF_RefereeApplication_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_RefereeApplication_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* CheckinTask:赛事一检、二检、三检任务和当前检录进度。 */
|
||
IF OBJECT_ID(N'dbo.[CheckinTask]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[CheckinTask] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_CheckinTask] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id(EventInfo.Id)
|
||
[CheckinNo] INT NOT NULL CONSTRAINT [DF_CheckinTask_CheckinNo] DEFAULT (1), -- 负责的检次:1-一检,2-二检,3-三检
|
||
[CheckerUserId] BIGINT NULL, -- 关联检录员用户Id(尚未绑定检录员时为空)
|
||
[TotalRounds] INT NOT NULL CONSTRAINT [DF_CheckinTask_TotalRounds] DEFAULT (1), -- 赛事检录总次数
|
||
[CurrentRound] INT NOT NULL CONSTRAINT [DF_CheckinTask_CurrentRound] DEFAULT (1), -- 当前检录轮次(与CheckinNo保持一致)
|
||
[CurrentSessionKey] NVARCHAR(64) NULL, -- 当前秩序册列标识
|
||
[CurrentSessionOrder] INT NOT NULL CONSTRAINT [DF_CheckinTask_CurrentSessionOrder] DEFAULT (0), -- 当前秩序册列的出场顺序
|
||
[CurrentSessionName] NVARCHAR(256) NULL, -- 当前秩序册列名称
|
||
[CurrentEventProjectId] BIGINT NULL, -- 当前检录的赛事项目Id
|
||
[CurrentSessionVenue] NVARCHAR(128) NULL, -- 当前秩序册列所在场地
|
||
[RoundName] NVARCHAR(64) NOT NULL CONSTRAINT [DF_CheckinTask_RoundName] DEFAULT (N'赛前检录'), -- 检次名称(由CheckinNo转换,如一检、二检)
|
||
[CurrentGroupId] BIGINT NULL, -- 当前检录的参赛组别Id(不限定组别时为空)
|
||
[CurrentGroupName] NVARCHAR(128) NOT NULL CONSTRAINT [DF_CheckinTask_CurrentGroupName] DEFAULT (N''), -- 当前检录的参赛组别名称
|
||
[GroupOrder] INT NOT NULL CONSTRAINT [DF_CheckinTask_GroupOrder] DEFAULT (0), -- 当前组别的顺序
|
||
[TotalGroups] INT NOT NULL CONSTRAINT [DF_CheckinTask_TotalGroups] DEFAULT (0), -- 本次检录的组别总数
|
||
[NextGroupName] NVARCHAR(128) NULL, -- 下一个待检录组别名称
|
||
[Venue] NVARCHAR(128) NULL, -- 检录场地
|
||
[TaskStatus] INT NOT NULL CONSTRAINT [DF_CheckinTask_TaskStatus] DEFAULT (0), -- 任务状态:0-未开始,1-进行中,2-已结束
|
||
[Status] INT NOT NULL CONSTRAINT [DF_CheckinTask_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_CheckinTask_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* CheckinRecord:参赛人员逐轮检录结果。 */
|
||
IF OBJECT_ID(N'dbo.[CheckinRecord]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[CheckinRecord] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_CheckinRecord] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[TaskId] BIGINT NOT NULL, -- 关联检录任务Id(CheckinTask.Id)
|
||
[Round] INT NOT NULL, -- 检次(与检录任务CheckinNo一致)
|
||
[SessionKey] NVARCHAR(64) NULL, -- 秩序册列标识
|
||
[SessionOrder] INT NOT NULL CONSTRAINT [DF_CheckinRecord_SessionOrder] DEFAULT (0), -- 秩序册列的出场顺序
|
||
[GroupId] BIGINT NULL, -- 参赛组别Id(不限定组别时为空)
|
||
[RegistrationPersonId] BIGINT NULL, -- 关联的报名人员Id;秩序册导入记录无报名人员时为空
|
||
[CheckerUserId] BIGINT NOT NULL, -- 执行检录的检录员用户Id
|
||
[Checked] BIT NOT NULL CONSTRAINT [DF_CheckinRecord_Checked] DEFAULT (0), -- 是否已检录(取消检录置为0)
|
||
[CheckedTime] DATETIME2(3) NULL, -- 检录时间(取消检录时置空)
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_CheckinRecord_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* Referee:裁判实名档案、等级、证书和可执裁角色。 */
|
||
IF OBJECT_ID(N'dbo.[Referee]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[Referee] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_Referee] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[Name] NVARCHAR(64) NOT NULL, -- 裁判姓名
|
||
[Mobile] NVARCHAR(16) NOT NULL, -- 联系电话(未删除数据中唯一)
|
||
[AppUserId] BIGINT NULL, -- 关联小程序用户Id(未关联小程序账号时为空)
|
||
[ProvinceCode] NVARCHAR(20) NOT NULL, -- 所属省份编码
|
||
[ProvinceName] NVARCHAR(64) NOT NULL, -- 所属省份名称
|
||
[CityCode] NVARCHAR(20) NOT NULL, -- 所属城市编码
|
||
[CityName] NVARCHAR(64) NOT NULL, -- 所属城市名称
|
||
[DistrictCode] NVARCHAR(20) NOT NULL, -- 所属区县编码
|
||
[DistrictName] NVARCHAR(64) NOT NULL, -- 所属区县名称
|
||
[Level] INT NOT NULL, -- 裁判等级:1-国际级,2-国家级,3-一级,4-二级,5-三级
|
||
[CertificateUrl] NVARCHAR(512) NOT NULL, -- 裁判证书图片URL
|
||
[Roles] INT NOT NULL, -- 可执裁角色(位标记,可多选,RefereeRole枚举组合)
|
||
[AuditStatus] INT NOT NULL CONSTRAINT [DF_Referee_AuditStatus] DEFAULT (0), -- 审核状态(AuditStatus枚举:待审核/通过/拒绝)
|
||
[AuditRemark] NVARCHAR(512) NULL, -- 审核备注
|
||
[AuditUserId] BIGINT NULL, -- 审核人(后台系统用户Id)
|
||
[AuditTime] DATETIME2(3) NULL, -- 审核时间
|
||
[Status] INT NOT NULL CONSTRAINT [DF_Referee_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_Referee_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventReferee:赛事与裁判档案的关联关系。 */
|
||
IF OBJECT_ID(N'dbo.[EventReferee]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventReferee] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventReferee] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id(Referee.Id)
|
||
[RefereeApplicationId] BIGINT NULL, -- 关联裁判报名记录Id(非小程序报名时为空)
|
||
[SourceType] INT NOT NULL CONSTRAINT [DF_EventReferee_SourceType] DEFAULT (0), -- 关联来源:1-后台添加,2-小程序报名,3-秩序册导入
|
||
[Status] INT NOT NULL CONSTRAINT [DF_EventReferee_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventReferee_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventJudgeAssignment:场次裁判席位分配。 */
|
||
IF OBJECT_ID(N'dbo.[EventJudgeAssignment]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventJudgeAssignment] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeAssignment] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id(EventSession.Id)
|
||
[EventRefereeId] BIGINT NOT NULL, -- 关联赛事裁判记录Id(EventReferee.Id)
|
||
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id(兼容历史查询的冗余字段)
|
||
[JudgeUserId] BIGINT NULL, -- 关联小程序用户Id(裁判未注册小程序时为空)
|
||
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码(取自计分规则席位配置,如T、DP1、P)
|
||
[JudgeRoleType] NVARCHAR(16) NULL, -- 裁判角色类别编码(如DP、DM、DR、P、T)
|
||
[AssignmentStatus] INT NOT NULL CONSTRAINT [DF_EventJudgeAssignment_AssignmentStatus] DEFAULT (0), -- 分配状态:0-草稿,1-已提交,2-已替换,9-已停用
|
||
[SubmittedTime] DATETIME2(3) NULL, -- 提交时间
|
||
[Remark] NVARCHAR(512) NULL, -- 备注
|
||
[Status] INT NOT NULL CONSTRAINT [DF_EventJudgeAssignment_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeAssignment_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventJudgeTask:面向裁判端下发的版本化评分任务。 */
|
||
IF OBJECT_ID(N'dbo.[EventJudgeTask]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventJudgeTask] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeTask] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
|
||
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
|
||
[JudgeAssignmentId] BIGINT NOT NULL, -- 关联裁判分配Id
|
||
[EventRefereeId] BIGINT NOT NULL, -- 关联赛事裁判记录Id
|
||
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id
|
||
[JudgeUserId] BIGINT NULL, -- 关联小程序用户Id
|
||
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码
|
||
[JudgeRoleType] NVARCHAR(16) NOT NULL, -- 裁判角色类别编码
|
||
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id
|
||
[RuleVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_RuleVersion] DEFAULT (1), -- 计分规则版本号
|
||
[TaskSnapshotJson] NVARCHAR(MAX) NOT NULL, -- 任务快照(JSON)
|
||
[TaskType] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_TaskType] DEFAULT (0), -- 任务类型:0-正常打分,1-成绩修正
|
||
[TaskStatus] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_TaskStatus] DEFAULT (0), -- 任务状态:0-待下发,10-已下发,20-已接收,30-评分中,40-已提交,50-需修正,60-已修正,80-已拒绝,90-已作废,99-已过期
|
||
[TaskVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeTask_TaskVersion] DEFAULT (1), -- 任务版本号
|
||
[DispatchedTime] DATETIME2(3) NULL, -- 下发时间
|
||
[AcceptedTime] DATETIME2(3) NULL, -- 接收时间
|
||
[SubmittedTime] DATETIME2(3) NULL, -- 提交时间
|
||
[ExpiresTime] DATETIME2(3) NULL, -- 任务截止时间
|
||
[OriginalTaskId] BIGINT NULL, -- 来源任务Id(修正/重发时)
|
||
[RejectReason] NVARCHAR(512) NULL, -- 拒绝原因
|
||
[Remark] NVARCHAR(512) NULL, -- 备注
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeTask_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventVenue:赛事比赛场地。 */
|
||
IF OBJECT_ID(N'dbo.[EventVenue]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventVenue] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventVenue] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[VenueCode] NVARCHAR(32) NOT NULL, -- 场地编码(同一赛事未删除数据中唯一,如V01)
|
||
[VenueName] NVARCHAR(128) NOT NULL, -- 场地名称
|
||
[Status] INT NOT NULL CONSTRAINT [DF_EventVenue_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[Sort] INT NOT NULL CONSTRAINT [DF_EventVenue_Sort] DEFAULT (0), -- 排序
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventVenue_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventSession:项目、组别、场地对应的比赛场次。 */
|
||
IF OBJECT_ID(N'dbo.[EventSession]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventSession] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventSession] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[EventProjectId] BIGINT NOT NULL, -- 关联赛事项目Id
|
||
[EventProjectGroupId] BIGINT NULL, -- 关联赛事项目组别Id(多组别混合时为空)
|
||
[VenueId] BIGINT NOT NULL, -- 关联比赛场地Id(EventVenue.Id)
|
||
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id(取自项目配置)
|
||
[SessionNo] NVARCHAR(32) NOT NULL, -- 场次编号(同一赛事未删除数据中唯一)
|
||
[SessionName] NVARCHAR(128) NULL, -- 场次名称
|
||
[StartTime] DATETIME2(3) NULL, -- 场次开始时间
|
||
[EndTime] DATETIME2(3) NULL, -- 场次结束时间
|
||
[CurrentEntryId] BIGINT NULL, -- 当前出场记录Id
|
||
[SessionStatus] INT NOT NULL CONSTRAINT [DF_EventSession_SessionStatus] DEFAULT (0), -- 场次状态:0-草稿,10-就绪,20-检录中,30-进行中,40-暂停,50-待确认,60-已结束,90-已取消
|
||
[Version] INT NOT NULL CONSTRAINT [DF_EventSession_Version] DEFAULT (1), -- 版本号(场次内容变更时递增)
|
||
[Status] INT NOT NULL CONSTRAINT [DF_EventSession_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventSession_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventSessionEntry:场次出场顺序、状态和重赛标识。 */
|
||
IF OBJECT_ID(N'dbo.[EventSessionEntry]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventSessionEntry] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventSessionEntry] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
|
||
[ParticipationRecordId] BIGINT NULL, -- 关联赛事参赛记录Id(未匹配到参赛记录时为空)
|
||
[RegistrationItemId] BIGINT NULL, -- 关联报名项目明细Id
|
||
[SourceType] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_SourceType] DEFAULT (0), -- 出场数据来源:0-报名平台编排,1-秩序册导入
|
||
[EntryNo] NVARCHAR(32) NOT NULL, -- 出场编号(项目序号+场地序号+出场顺序)
|
||
[PlayOrder] INT NOT NULL, -- 出场顺序(同一场次未删除数据中唯一)
|
||
[EntryStatus] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_EntryStatus] DEFAULT (0), -- 出场状态:0-待出场,10-已检录,20-已叫号,30-进行中,40-已完成,80-退赛,90-取消比赛资格
|
||
[CallTime] DATETIME2(3) NULL, -- 叫号时间
|
||
[StartTime] DATETIME2(3) NULL, -- 开始比赛时间
|
||
[FinishTime] DATETIME2(3) NULL, -- 结束比赛时间
|
||
[IsRematch] BIT NOT NULL CONSTRAINT [DF_EventSessionEntry_IsRematch] DEFAULT (0), -- 是否为重赛产生的出场记录
|
||
[RematchFromEntryId] BIGINT NULL, -- 重赛来源出场记录Id
|
||
[IsVoided] BIT NOT NULL CONSTRAINT [DF_EventSessionEntry_IsVoided] DEFAULT (0), -- 成绩是否已作废
|
||
[VoidReason] NVARCHAR(512) NULL, -- 成绩作废原因
|
||
[ParticipantName] NVARCHAR(128) NOT NULL, -- 参赛人员姓名
|
||
[TeamName] NVARCHAR(128) NULL, -- 参赛队伍名称(个人项目为空)
|
||
[GroupName] NVARCHAR(128) NOT NULL, -- 参赛组别名称
|
||
[Version] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_Version] DEFAULT (1), -- 版本号(出场信息变更时递增)
|
||
[Status] INT NOT NULL CONSTRAINT [DF_EventSessionEntry_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventSessionEntry_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventSessionEntryRematch:重赛申请、安排和完成记录。 */
|
||
IF OBJECT_ID(N'dbo.[EventSessionEntryRematch]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventSessionEntryRematch] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventSessionEntryRematch] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[EventProjectId] BIGINT NOT NULL, -- 关联赛事项目Id
|
||
[EventProjectGroupId] BIGINT NULL, -- 关联赛事项目组别Id
|
||
[OriginalSessionId] BIGINT NOT NULL, -- 原比赛场次Id
|
||
[OriginalSessionEntryId] BIGINT NOT NULL, -- 原场次出场记录Id
|
||
[NewSessionId] BIGINT NULL, -- 重赛场次Id
|
||
[NewSessionEntryId] BIGINT NULL, -- 重赛出场记录Id
|
||
[ReasonCode] NVARCHAR(64) NOT NULL, -- 重赛原因编码
|
||
[RematchReason] NVARCHAR(512) NOT NULL, -- 重赛原因说明
|
||
[ApplyUserId] BIGINT NOT NULL, -- 申请人Id
|
||
[RematchStatus] INT NOT NULL CONSTRAINT [DF_EventSessionEntryRematch_RematchStatus] DEFAULT (0), -- 重赛状态:0-已申请,10-已安排,20-已完成,90-已取消
|
||
[CompletedTime] DATETIME2(3) NULL, -- 完成时间
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventSessionEntryRematch_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventJudgeMessage:裁判端业务通知与已读状态。 */
|
||
IF OBJECT_ID(N'dbo.[EventJudgeMessage]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventJudgeMessage] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeMessage] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[ReceiverUserId] BIGINT NOT NULL, -- 接收用户Id
|
||
[RefereeId] BIGINT NOT NULL, -- 接收裁判Id
|
||
[MessageType] INT NOT NULL, -- 消息类型:1-成绩修正提醒,2-评分任务下发,3-重赛通知,9-系统通知
|
||
[Title] NVARCHAR(128) NOT NULL, -- 消息标题
|
||
[Content] NVARCHAR(512) NOT NULL, -- 消息内容
|
||
[RelationType] NVARCHAR(32) NULL, -- 关联业务类型
|
||
[RelationId] BIGINT NULL, -- 关联业务Id
|
||
[IsRead] BIT NOT NULL CONSTRAINT [DF_EventJudgeMessage_IsRead] DEFAULT (0), -- 是否已读
|
||
[ReadTime] DATETIME2(3) NULL, -- 阅读时间
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeMessage_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* ScoreRule:项目计分规则及裁判席位JSON配置。 */
|
||
IF OBJECT_ID(N'dbo.[ScoreRule]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[ScoreRule] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_ScoreRule] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[RuleCode] NVARCHAR(64) NOT NULL, -- 规则编码(未删除数据中唯一,如ROPE_PRESCRIBED/ROPE_PRESCRIBED_SINGLE)
|
||
[RuleName] NVARCHAR(128) NOT NULL, -- 规则名称
|
||
[JudgeRoleSchemaJson] NVARCHAR(2000) NOT NULL, -- 裁判席位配置(JSON,按裁判组描述所需角色席位)
|
||
[RuleConfigJson] NVARCHAR(4000) NULL, -- 计分参数配置(JSON,扣分项/权重等扩展参数)
|
||
[RuleVersion] INT NOT NULL CONSTRAINT [DF_ScoreRule_RuleVersion] DEFAULT (1), -- 规则版本号
|
||
[Status] INT NOT NULL CONSTRAINT [DF_ScoreRule_Status] DEFAULT (0), -- 可用状态:0-启用,1-禁用
|
||
[Sort] INT NOT NULL CONSTRAINT [DF_ScoreRule_Sort] DEFAULT (0), -- 排序
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_ScoreRule_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* ScoreRuleItem:计分规则的标准化评分项字典。 */
|
||
IF OBJECT_ID(N'dbo.[ScoreRuleItem]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[ScoreRuleItem] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_ScoreRuleItem] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id(ScoreRule.Id)
|
||
[JudgeRoleType] NVARCHAR(16) NOT NULL, -- 裁判角色类别编码
|
||
[ItemCode] NVARCHAR(64) NOT NULL, -- 评分项编码
|
||
[ItemName] NVARCHAR(128) NOT NULL, -- 评分项名称
|
||
[ItemType] INT NOT NULL, -- 评分项类型:1-难度等级计数,2-规定元素计数,3-表现维度,4-扣分项,5-取消资格原因,6-规定赛评分项
|
||
[ParentItemCode] NVARCHAR(64) NULL, -- 父级评分项编码
|
||
[UnitValue] DECIMAL(18,4) NULL, -- 单位分值
|
||
[MinValue] DECIMAL(18,4) NULL, -- 最小值
|
||
[MaxValue] DECIMAL(18,4) NULL, -- 最大值
|
||
[StepValue] DECIMAL(18,4) NULL, -- 录入步长
|
||
[DefaultValue] DECIMAL(18,4) NULL, -- 默认值
|
||
[CalcMode] INT NOT NULL CONSTRAINT [DF_ScoreRuleItem_CalcMode] DEFAULT (0), -- 计算方式:0-数量×单位分值累加,1-直接取录入值,2-仅记录不参与合计
|
||
[ScoreDimension] INT NOT NULL CONSTRAINT [DF_ScoreRuleItem_ScoreDimension] DEFAULT (0), -- 计入得分维度:0-不计入,1-难度分,2-表现分,3-规定分,4-扣分
|
||
[IsRequired] BIT NOT NULL CONSTRAINT [DF_ScoreRuleItem_IsRequired] DEFAULT (0), -- 是否必填
|
||
[ExtensionJson] NVARCHAR(2000) NULL, -- 扩展配置(JSON)
|
||
[Sort] INT NOT NULL CONSTRAINT [DF_ScoreRuleItem_Sort] DEFAULT (0), -- 排序
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_ScoreRuleItem_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventJudgeScoreSheet:裁判提交的版本化评分单主表。 */
|
||
IF OBJECT_ID(N'dbo.[EventJudgeScoreSheet]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventJudgeScoreSheet] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeScoreSheet] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
|
||
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
|
||
[JudgeTaskId] BIGINT NOT NULL, -- 关联裁判评分任务Id
|
||
[JudgeAssignmentId] BIGINT NOT NULL, -- 关联裁判分配Id
|
||
[RefereeId] BIGINT NOT NULL, -- 关联裁判档案Id
|
||
[JudgeUserId] BIGINT NULL, -- 提交用户Id
|
||
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码
|
||
[JudgeRoleType] NVARCHAR(16) NOT NULL, -- 裁判角色类别编码
|
||
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id
|
||
[RuleVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RuleVersion] DEFAULT (1), -- 计分规则版本号
|
||
[SheetVersion] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_SheetVersion] DEFAULT (1), -- 评分单版本号
|
||
[SheetStatus] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_SheetStatus] DEFAULT (0), -- 评分单状态:0-草稿,10-已提交,20-已确认,30-已被修正,90-已作废
|
||
[IsCurrent] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_IsCurrent] DEFAULT (1), -- 是否为当前有效版本
|
||
[DifficultyScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_DifficultyScore] DEFAULT (0), -- 难度分
|
||
[PerformanceScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_PerformanceScore] DEFAULT (0), -- 表现分
|
||
[RequiredScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RequiredScore] DEFAULT (0), -- 规定分
|
||
[DeductionScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_DeductionScore] DEFAULT (0), -- 扣分
|
||
[RequiredCompletedCount] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RequiredCompletedCount] DEFAULT (0), -- 规定元素完成数量
|
||
[RequiredMissingCount] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_RequiredMissingCount] DEFAULT (0), -- 规定元素缺失数量
|
||
[TotalScore] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_TotalScore] DEFAULT (0), -- 合计得分
|
||
[IsDisqualified] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_IsDisqualified] DEFAULT (0), -- 是否取消比赛资格
|
||
[DisqualifyReasonCode] NVARCHAR(64) NULL, -- 取消比赛资格原因编码
|
||
[DisqualifyRemark] NVARCHAR(512) NULL, -- 取消比赛资格补充说明
|
||
[CalculationJson] NVARCHAR(MAX) NULL, -- 计算明细(JSON)
|
||
[IdempotencyKey] NVARCHAR(64) NOT NULL, -- 提交幂等键
|
||
[SubmittedTime] DATETIME2(3) NULL, -- 提交时间
|
||
[OriginalSheetId] BIGINT NULL, -- 来源评分单Id(成绩修正时)
|
||
[CorrectionReason] NVARCHAR(512) NULL, -- 修正原因
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreSheet_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventJudgeScoreAttachment:评分单记录画板,按上传版本留档。 */
|
||
IF OBJECT_ID(N'dbo.[EventJudgeScoreAttachment]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventJudgeScoreAttachment] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeScoreAttachment] PRIMARY KEY,
|
||
[EventId] BIGINT NOT NULL,
|
||
[SessionId] BIGINT NOT NULL,
|
||
[SessionEntryId] BIGINT NOT NULL,
|
||
[ScoreSheetId] BIGINT NOT NULL,
|
||
[JudgeAssignmentId] BIGINT NOT NULL,
|
||
[RefereeId] BIGINT NOT NULL,
|
||
[AttachmentType] NVARCHAR(32) NOT NULL,
|
||
[FileName] NVARCHAR(128) NOT NULL,
|
||
[FileUrl] NVARCHAR(1000) NOT NULL,
|
||
[FileSize] BIGINT NOT NULL,
|
||
[ContentType] NVARCHAR(64) NOT NULL,
|
||
[IdempotencyKey] NVARCHAR(64) NOT NULL,
|
||
[IsCurrent] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreAttachment_IsCurrent] DEFAULT (1),
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreAttachment_DeleteMark] DEFAULT (0),
|
||
[CreatedUserId] BIGINT NOT NULL,
|
||
[CreatedTime] DATETIME2(3) NOT NULL,
|
||
[UpdatedUserId] BIGINT NULL,
|
||
[UpdatedTime] DATETIME2(3) NULL
|
||
);
|
||
END;
|
||
|
||
/* EventJudgeScoreDetail:评分单逐项录入和计算明细。 */
|
||
IF OBJECT_ID(N'dbo.[EventJudgeScoreDetail]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventJudgeScoreDetail] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventJudgeScoreDetail] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[ScoreSheetId] BIGINT NOT NULL, -- 关联裁判评分单Id
|
||
[ScoreRuleItemId] BIGINT NULL, -- 关联计分规则明细Id
|
||
[ItemCode] NVARCHAR(64) NOT NULL, -- 评分项编码
|
||
[ItemName] NVARCHAR(128) NOT NULL, -- 评分项名称(快照)
|
||
[SubjectCode] NVARCHAR(32) NULL, -- 评分对象编码(如A、B)
|
||
[ItemType] INT NOT NULL, -- 评分项类型:1-难度计数,2-规定元素,3-表现维度,4-扣分项,5-取消资格,6-规定赛评分项
|
||
[ScoreDimension] INT NOT NULL, -- 得分维度:0-不计入,1-难度分,2-表现分,3-规定分,4-扣分
|
||
[CountValue] DECIMAL(18,4) NULL, -- 录入数量
|
||
[InputValue] DECIMAL(18,4) NULL, -- 录入分值
|
||
[UnitValue] DECIMAL(18,4) NULL, -- 单位分值
|
||
[Subtotal] DECIMAL(18,4) NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_Subtotal] DEFAULT (0), -- 本项小计
|
||
[IsAutoGenerated] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_IsAutoGenerated] DEFAULT (0), -- 是否自动生成
|
||
[ParentItemCode] NVARCHAR(64) NULL, -- 来源评分项编码
|
||
[ExtensionJson] NVARCHAR(1000) NULL, -- 扩展信息(JSON)
|
||
[Sort] INT NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_Sort] DEFAULT (0), -- 排序
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventJudgeScoreDetail_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventResultVersion:正式成绩的不可变版本快照。 */
|
||
IF OBJECT_ID(N'dbo.[EventResultVersion]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventResultVersion] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventResultVersion] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventResultId] BIGINT NOT NULL, -- 关联赛事成绩Id(EventResult.Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
|
||
[ResultVersion] INT NOT NULL, -- 成绩版本号
|
||
[DifficultyScore] DECIMAL(18,4) NOT NULL, -- 难度分
|
||
[PerformanceScore] DECIMAL(18,4) NOT NULL, -- 表现分
|
||
[RequiredScore] DECIMAL(18,4) NOT NULL, -- 规定分
|
||
[DeductionScore] DECIMAL(18,4) NOT NULL, -- 扣分
|
||
[TotalScore] DECIMAL(18,4) NOT NULL, -- 正式总分
|
||
[Rank] INT NULL, -- 名次
|
||
[IsDisqualified] BIT NOT NULL, -- 是否取消比赛资格
|
||
[DisqualifyReasonCode] NVARCHAR(64) NULL, -- 取消比赛资格原因编码
|
||
[ResultStatus] INT NOT NULL, -- 成绩状态:0-计算中,10-待复核,20-已确认,30-已投屏,40-已更正,90-已作废
|
||
[SourceType] INT NOT NULL, -- 版本来源:0-正常聚合,1-成绩修正,2-重赛
|
||
[ScoreCorrectionId] BIGINT NULL, -- 关联成绩修正申请Id
|
||
[ScoreRuleId] BIGINT NOT NULL, -- 关联计分规则Id
|
||
[RuleVersion] INT NOT NULL, -- 计分规则版本号
|
||
[CalculationJson] NVARCHAR(MAX) NULL, -- 聚合计算明细(JSON)
|
||
[Remark] NVARCHAR(512) NULL, -- 版本说明
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventResultVersion_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventScoreCorrection:成绩修正申请及审批闭环。 */
|
||
IF OBJECT_ID(N'dbo.[EventScoreCorrection]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventScoreCorrection] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventScoreCorrection] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[SessionId] BIGINT NOT NULL, -- 关联比赛场次Id
|
||
[SessionEntryId] BIGINT NOT NULL, -- 关联场次出场记录Id
|
||
[OriginalScoreSheetId] BIGINT NOT NULL, -- 被修正的原评分单Id
|
||
[JudgeAssignmentId] BIGINT NOT NULL, -- 关联裁判分配Id
|
||
[JudgeRole] NVARCHAR(32) NOT NULL, -- 裁判席位编码
|
||
[CorrectionTaskId] BIGINT NULL, -- 修正任务Id
|
||
[NewScoreSheetId] BIGINT NULL, -- 修正完成后产生的新评分单Id
|
||
[ApplyUserId] BIGINT NULL, -- 后台申请人Id(SysUser),裁判端申请时为空
|
||
[ApplyRefereeId] BIGINT NULL, -- 裁判端申请人Id(Referee),后台发起时为空
|
||
[ApplyReason] NVARCHAR(512) NOT NULL, -- 申请修正原因
|
||
[ApproveUserId] BIGINT NULL, -- 审批人Id
|
||
[ApproveRemark] NVARCHAR(512) NULL, -- 审批意见
|
||
[ApproveTime] DATETIME2(3) NULL, -- 审批时间
|
||
[CorrectionStatus] INT NOT NULL CONSTRAINT [DF_EventScoreCorrection_CorrectionStatus] DEFAULT (0), -- 修正状态:0-已申请,10-已批准,20-已拒绝,30-裁判修改中,40-已完成,90-已取消
|
||
[CompletedTime] DATETIME2(3) NULL, -- 完成时间
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventScoreCorrection_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* EventResultScreenCast:成绩投屏载荷、发布与撤回审计。 */
|
||
IF OBJECT_ID(N'dbo.[EventResultScreenCast]','U') IS NULL
|
||
BEGIN
|
||
CREATE TABLE dbo.[EventResultScreenCast] (
|
||
[Id] BIGINT NOT NULL CONSTRAINT [PK_EventResultScreenCast] PRIMARY KEY, -- 主键Id(雪花Id)
|
||
[EventId] BIGINT NOT NULL, -- 关联赛事Id
|
||
[CastType] INT NOT NULL, -- 投屏类型:1-成绩,2-排名
|
||
[VenueId] BIGINT NULL, -- 投屏场地Id
|
||
[EventProjectId] BIGINT NULL, -- 关联赛事项目Id
|
||
[EventProjectGroupId] BIGINT NULL, -- 关联赛事项目组别Id
|
||
[SessionId] BIGINT NULL, -- 关联比赛场次Id
|
||
[SessionEntryId] BIGINT NULL, -- 关联场次出场记录Id
|
||
[EventResultId] BIGINT NULL, -- 关联赛事成绩Id
|
||
[ResultVersion] INT NULL, -- 投屏时的成绩版本号
|
||
[PayloadJson] NVARCHAR(MAX) NOT NULL, -- 投屏内容快照(JSON)
|
||
[CastStatus] INT NOT NULL CONSTRAINT [DF_EventResultScreenCast_CastStatus] DEFAULT (0), -- 投屏状态:0-已投出,10-已撤回,20-已被新投屏替换
|
||
[CastTime] DATETIME2(3) NOT NULL, -- 投屏时间
|
||
[RevokedTime] DATETIME2(3) NULL, -- 撤回时间
|
||
[RevokedUserId] BIGINT NULL, -- 撤回人Id
|
||
[Remark] NVARCHAR(512) NULL, -- 备注
|
||
[DeleteMark] BIT NOT NULL CONSTRAINT [DF_EventResultScreenCast_DeleteMark] DEFAULT (0), -- 软删除标记:0-正常,1-已删除
|
||
[CreatedUserId] BIGINT NOT NULL, -- 创建人用户Id
|
||
[CreatedTime] DATETIME2(3) NOT NULL, -- 创建时间(UTC)
|
||
[UpdatedUserId] BIGINT NULL, -- 最后更新人用户Id(未更新过为空)
|
||
[UpdatedTime] DATETIME2(3) NULL -- 最后更新时间(UTC,未更新过为空)
|
||
);
|
||
END;
|
||
|
||
/* ====================================================================================
|
||
[2/9] 改表结构 · 扩展一期已有表(IF COL_LENGTH 判空,列已存在则跳过,可重复执行)
|
||
按目标表分组:AppUser / Referee / Merchant / MerchantCertification / CertificateTemplate /
|
||
CertificatePlaceholder / EventInfo / EventRegistrationLimit / Project / SysUser / EventResult
|
||
==================================================================================== */
|
||
PRINT N'[2/9] 改表结构:扩展一期表新增列';
|
||
|
||
/* AppUser 小程序用户:角色身份 MiniProgramRole,1-参赛者 2-裁判 3-检录员(独立于报名人员类型 PersonType),默认1 */
|
||
IF COL_LENGTH('dbo.AppUser','MiniProgramRole') IS NULL ALTER TABLE dbo.AppUser ADD MiniProgramRole INT NOT NULL CONSTRAINT DF_AppUser_MiniProgramRole DEFAULT(1) WITH VALUES; -- 小程序角色身份:1-参赛者,2-裁判,3-检录员(独立于报名人员类型PersonType),默认1
|
||
IF COL_LENGTH('dbo.AppUser','AuditUserId') IS NULL ALTER TABLE dbo.AppUser ADD AuditUserId BIGINT NULL;
|
||
IF COL_LENGTH('dbo.AppUser','AuditTime') IS NULL ALTER TABLE dbo.AppUser ADD AuditTime DATETIME NULL;
|
||
/* 审核留痕:裁判、商户及商户认证 */
|
||
IF COL_LENGTH('dbo.Referee','AuditUserId') IS NULL ALTER TABLE dbo.Referee ADD AuditUserId BIGINT NULL;
|
||
IF COL_LENGTH('dbo.Referee','AuditTime') IS NULL ALTER TABLE dbo.Referee ADD AuditTime DATETIME2(3) NULL;
|
||
IF OBJECT_ID(N'dbo.MerchantCertification','U') IS NOT NULL AND COL_LENGTH('dbo.MerchantCertification','AuditUserId') IS NULL ALTER TABLE dbo.MerchantCertification ADD AuditUserId BIGINT NULL;
|
||
IF OBJECT_ID(N'dbo.MerchantCertification','U') IS NOT NULL AND COL_LENGTH('dbo.MerchantCertification','AuditTime') IS NULL ALTER TABLE dbo.MerchantCertification ADD AuditTime DATETIME NULL;
|
||
IF OBJECT_ID(N'dbo.Merchant','U') IS NOT NULL AND COL_LENGTH('dbo.Merchant','AuditUserId') IS NULL ALTER TABLE dbo.Merchant ADD AuditUserId BIGINT NULL;
|
||
IF OBJECT_ID(N'dbo.Merchant','U') IS NOT NULL AND COL_LENGTH('dbo.Merchant','AuditTime') IS NULL ALTER TABLE dbo.Merchant ADD AuditTime DATETIME NULL;
|
||
IF OBJECT_ID(N'dbo.Merchant','U') IS NOT NULL AND COL_LENGTH('dbo.Merchant','AuditStatus') IS NOT NULL
|
||
BEGIN
|
||
EXEC sys.sp_executesql N'UPDATE dbo.Merchant SET AuditStatus=1 WHERE AuditStatus IS NULL;';
|
||
EXEC sys.sp_executesql N'ALTER TABLE dbo.Merchant ALTER COLUMN AuditStatus INT NOT NULL;';
|
||
END;
|
||
/* 证书模板与占位符通用字段 */
|
||
IF OBJECT_ID(N'dbo.CertificateTemplate','U') IS NOT NULL AND COL_LENGTH('dbo.CertificateTemplate','UpdatedUserId') IS NULL ALTER TABLE dbo.CertificateTemplate ADD UpdatedUserId BIGINT NULL;
|
||
IF OBJECT_ID(N'dbo.CertificateTemplate','U') IS NOT NULL AND COL_LENGTH('dbo.CertificateTemplate','UpdatedTime') IS NULL ALTER TABLE dbo.CertificateTemplate ADD UpdatedTime DATETIME NULL;
|
||
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','CreatedUserId') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD CreatedUserId BIGINT NULL;
|
||
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','CreatedTime') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD CreatedTime DATETIME NULL;
|
||
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','UpdatedUserId') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD UpdatedUserId BIGINT NULL;
|
||
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL AND COL_LENGTH('dbo.CertificatePlaceholder','UpdatedTime') IS NULL ALTER TABLE dbo.CertificatePlaceholder ADD UpdatedTime DATETIME NULL;
|
||
IF OBJECT_ID(N'dbo.CertificatePlaceholder','U') IS NOT NULL
|
||
BEGIN
|
||
IF OBJECT_ID(N'dbo.CertificateTemplate','U') IS NOT NULL
|
||
EXEC sys.sp_executesql N'UPDATE p SET CreatedUserId=COALESCE(p.CreatedUserId,t.CreatedUserId,0),CreatedTime=COALESCE(p.CreatedTime,t.CreatedTime,GETDATE()) FROM dbo.CertificatePlaceholder p LEFT JOIN dbo.CertificateTemplate t ON t.Id=p.TemplateId WHERE p.CreatedUserId IS NULL OR p.CreatedTime IS NULL;';
|
||
ELSE
|
||
EXEC sys.sp_executesql N'UPDATE dbo.CertificatePlaceholder SET CreatedUserId=COALESCE(CreatedUserId,0),CreatedTime=COALESCE(CreatedTime,GETDATE()) WHERE CreatedUserId IS NULL OR CreatedTime IS NULL;';
|
||
EXEC sys.sp_executesql N'ALTER TABLE dbo.CertificatePlaceholder ALTER COLUMN CreatedUserId BIGINT NOT NULL;';
|
||
EXEC sys.sp_executesql N'ALTER TABLE dbo.CertificatePlaceholder ALTER COLUMN CreatedTime DATETIME NOT NULL;';
|
||
END;
|
||
/* EventInfo 赛事:裁判报名邀请码 RefereeRegistrationCode */
|
||
IF COL_LENGTH('dbo.EventInfo','RefereeRegistrationCode') IS NULL ALTER TABLE dbo.EventInfo ADD RefereeRegistrationCode NVARCHAR(32) NULL; -- 裁判报名邀请码
|
||
/* EventRegistrationLimit 报名限额:裁判名额 RefereeLimit,默认0 */
|
||
IF COL_LENGTH('dbo.EventRegistrationLimit','RefereeLimit') IS NULL ALTER TABLE dbo.EventRegistrationLimit ADD RefereeLimit INT NOT NULL CONSTRAINT DF_EventRegistrationLimit_RefereeLimit DEFAULT(0) WITH VALUES; -- 裁判名额限制(默认0)
|
||
/* EventRegistrationItem 报名项目明细:支持一个单位在同一报名订单中选择多个来源团队。 */
|
||
IF COL_LENGTH(N'dbo.EventRegistrationItem', N'TeamId') IS NULL ALTER TABLE dbo.EventRegistrationItem ADD TeamId BIGINT NULL;
|
||
IF COL_LENGTH(N'dbo.EventRegistrationItem', N'TeamName') IS NULL ALTER TABLE dbo.EventRegistrationItem ADD TeamName NVARCHAR(64) NULL;
|
||
IF COL_LENGTH(N'dbo.EventRegistrationItem', N'TeamIndex') IS NULL ALTER TABLE dbo.EventRegistrationItem ADD TeamIndex INT NULL;
|
||
;WITH TeamCandidates AS (
|
||
SELECT item.Id AS RegistrationItemId,team.Id AS TeamId,
|
||
COUNT_BIG(1) OVER(PARTITION BY item.Id) AS CandidateCount
|
||
FROM dbo.EventRegistrationItem item
|
||
INNER JOIN dbo.EventRegistration registration ON registration.Id=item.RegistrationId
|
||
INNER JOIN dbo.Team team
|
||
ON LTRIM(RTRIM(team.Name))=LTRIM(RTRIM(registration.TeamName))
|
||
AND ((registration.MerchantCertificationId IS NOT NULL AND team.MerchantCertificationId=registration.MerchantCertificationId)
|
||
OR team.CreatedUserId=registration.CreatedUserId)
|
||
WHERE item.TeamId IS NULL AND registration.RegistrationMode=2
|
||
AND NULLIF(LTRIM(RTRIM(registration.TeamName)),N'') IS NOT NULL
|
||
)
|
||
UPDATE item SET TeamId=candidate.TeamId
|
||
FROM dbo.EventRegistrationItem item
|
||
INNER JOIN TeamCandidates candidate ON candidate.RegistrationItemId=item.Id AND candidate.CandidateCount=1;
|
||
UPDATE item SET TeamName=LEFT(COALESCE(NULLIF(LTRIM(RTRIM(registration.TeamName)),N''),team.Name),64)
|
||
FROM dbo.EventRegistrationItem item
|
||
INNER JOIN dbo.EventRegistration registration ON registration.Id=item.RegistrationId
|
||
LEFT JOIN dbo.Team team ON team.Id=item.TeamId
|
||
WHERE item.TeamName IS NULL
|
||
AND (NULLIF(LTRIM(RTRIM(registration.TeamName)),N'') IS NOT NULL OR team.Id IS NOT NULL);
|
||
;WITH OrderedTeamItems AS (
|
||
SELECT item.Id,ROW_NUMBER() OVER(PARTITION BY item.RegistrationId,item.ProjectId,
|
||
ISNULL(item.EventProjectGroupId,0),ISNULL(item.TeamId,0) ORDER BY item.CreatedTime,item.Id) AS RepairedTeamIndex
|
||
FROM dbo.EventRegistrationItem item
|
||
LEFT JOIN dbo.EventProject eventProject ON eventProject.Id=item.ProjectId
|
||
LEFT JOIN dbo.Project project ON project.Id=eventProject.ProjectId
|
||
WHERE item.TeamIndex IS NULL AND (project.ProjectType IN(1005,1006) OR item.ProjectTypeName LIKE N'%团队%')
|
||
)
|
||
UPDATE item SET TeamIndex=ordered.RepairedTeamIndex
|
||
FROM dbo.EventRegistrationItem item INNER JOIN OrderedTeamItems ordered ON ordered.Id=item.Id;
|
||
/* Project 项目:绑定计分规则 ScoreRuleId -> ScoreRule.Id */
|
||
IF COL_LENGTH('dbo.Project','ScoreRuleId') IS NULL ALTER TABLE dbo.Project ADD ScoreRuleId BIGINT NULL; -- 项目绑定的计分规则Id(ScoreRule.Id)
|
||
/* SysUser 扩展为“单位账号”:UnitName 单位名称;UnitPlatform 所属平台 0-系统用户 1-报名平台 2-打分系统,默认0 */
|
||
IF COL_LENGTH('dbo.SysUser','UnitName') IS NULL ALTER TABLE dbo.SysUser ADD UnitName NVARCHAR(128) NULL; -- 单位名称(单位账号扩展)
|
||
IF COL_LENGTH('dbo.SysUser','UnitPlatform') IS NULL ALTER TABLE dbo.SysUser ADD UnitPlatform INT NOT NULL CONSTRAINT DF_SysUser_UnitPlatform DEFAULT(0) WITH VALUES; -- 所属平台:0-赛事系统用户,1-报名平台,2-打分系统,默认0
|
||
/* EventResult 成绩表:关联场次/出场 SessionId、SessionEntryId */
|
||
IF COL_LENGTH('dbo.EventResult','SessionId') IS NULL ALTER TABLE dbo.EventResult ADD SessionId BIGINT NULL; -- 关联比赛场次Id(EventSession.Id)
|
||
IF COL_LENGTH('dbo.EventResult','SessionEntryId') IS NULL ALTER TABLE dbo.EventResult ADD SessionEntryId BIGINT NULL; -- 关联场次出场记录Id
|
||
/* 成绩四类分值与总分:难度/表现/规定/扣分 DECIMAL(18,4) 默认0,TotalScore 允许为空 */
|
||
IF COL_LENGTH('dbo.EventResult','DifficultyScore') IS NULL ALTER TABLE dbo.EventResult ADD DifficultyScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_DifficultyScore DEFAULT(0) WITH VALUES; -- 难度分 DECIMAL(18,4),默认0
|
||
IF COL_LENGTH('dbo.EventResult','PerformanceScore') IS NULL ALTER TABLE dbo.EventResult ADD PerformanceScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_PerformanceScore DEFAULT(0) WITH VALUES; -- 表现分 DECIMAL(18,4),默认0
|
||
IF COL_LENGTH('dbo.EventResult','RequiredScore') IS NULL ALTER TABLE dbo.EventResult ADD RequiredScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_RequiredScore DEFAULT(0) WITH VALUES; -- 规定分 DECIMAL(18,4),默认0
|
||
IF COL_LENGTH('dbo.EventResult','DeductionScore') IS NULL ALTER TABLE dbo.EventResult ADD DeductionScore DECIMAL(18,4) NOT NULL CONSTRAINT DF_EventResult_DeductionScore DEFAULT(0) WITH VALUES; -- 扣分 DECIMAL(18,4),默认0
|
||
IF COL_LENGTH('dbo.EventResult','TotalScore') IS NULL ALTER TABLE dbo.EventResult ADD TotalScore DECIMAL(18,4) NULL; -- 合计总分(允许为空)
|
||
/* 取消资格标记 IsDisqualified(默认0) 与原因码 DisqualifyReasonCode */
|
||
IF COL_LENGTH('dbo.EventResult','IsDisqualified') IS NULL ALTER TABLE dbo.EventResult ADD IsDisqualified BIT NOT NULL CONSTRAINT DF_EventResult_IsDisqualified DEFAULT(0) WITH VALUES; -- 是否取消比赛资格(默认0)
|
||
IF COL_LENGTH('dbo.EventResult','DisqualifyReasonCode') IS NULL ALTER TABLE dbo.EventResult ADD DisqualifyReasonCode NVARCHAR(64) NULL; -- 取消比赛资格原因编码
|
||
/* 成绩状态机 ResultStatus(0草稿/10待确认/20已确认/30已发布/40已投屏/90作废) 与版本号 ResultVersion(默认1) */
|
||
IF COL_LENGTH('dbo.EventResult','ResultStatus') IS NULL ALTER TABLE dbo.EventResult ADD ResultStatus INT NOT NULL CONSTRAINT DF_EventResult_ResultStatus DEFAULT(0) WITH VALUES; -- 成绩状态:0-草稿,10-待确认,20-已确认,30-已发布,40-已投屏,90-作废
|
||
IF COL_LENGTH('dbo.EventResult','ResultVersion') IS NULL ALTER TABLE dbo.EventResult ADD ResultVersion INT NOT NULL CONSTRAINT DF_EventResult_ResultVersion DEFAULT(1) WITH VALUES; -- 成绩版本号(默认1)
|
||
IF COL_LENGTH('dbo.EventResult','ReviewUserId') IS NULL ALTER TABLE dbo.EventResult ADD ReviewUserId BIGINT NULL; -- 成绩复核人
|
||
IF COL_LENGTH('dbo.EventResult','ReviewTime') IS NULL ALTER TABLE dbo.EventResult ADD ReviewTime DATETIME NULL; -- 成绩复核时间
|
||
/* 成绩计算过程快照 CalculationJson(NVARCHAR MAX),用于追溯与复算 */
|
||
IF COL_LENGTH('dbo.EventResult','CalculationJson') IS NULL ALTER TABLE dbo.EventResult ADD CalculationJson NVARCHAR(MAX) NULL; -- 成绩计算过程快照(JSON),用于追溯复算
|
||
|
||
/* ====================================================================================
|
||
[3/9] 改表结构 · 校验约束 / 外键 / 索引(均判空后创建,可重复执行)
|
||
3.1 CHECK 域值约束;3.2 外键(WITH CHECK 强校验存量);3.3 索引(UX_唯一/IX_非聚集,过滤索引仅约束未删除数据)
|
||
==================================================================================== */
|
||
PRINT N'[3/9] 改表结构:创建校验约束、外键与索引';
|
||
/* 3.1 CHECK 域值约束:限定枚举取值(含一期新增列 MiniProgramRole/UnitPlatform 与二期新表) */
|
||
IF OBJECT_ID('CK_AppUser_MiniProgramRole','C') IS NULL ALTER TABLE dbo.AppUser WITH CHECK ADD CONSTRAINT CK_AppUser_MiniProgramRole CHECK(MiniProgramRole IN(1,2,3));
|
||
IF OBJECT_ID('CK_SysUser_UnitPlatform','C') IS NULL ALTER TABLE dbo.SysUser WITH CHECK ADD CONSTRAINT CK_SysUser_UnitPlatform CHECK(UnitPlatform IN(0,1,2));
|
||
IF OBJECT_ID('CK_CheckinTask_CheckinNo','C') IS NULL ALTER TABLE dbo.CheckinTask WITH CHECK ADD CONSTRAINT CK_CheckinTask_CheckinNo CHECK(CheckinNo BETWEEN 1 AND 3 AND TotalRounds BETWEEN 1 AND 3 AND CurrentRound BETWEEN 1 AND 3);
|
||
IF OBJECT_ID('CK_EventSession_Time','C') IS NULL ALTER TABLE dbo.EventSession WITH CHECK ADD CONSTRAINT CK_EventSession_Time CHECK(EndTime IS NULL OR StartTime IS NULL OR EndTime>=StartTime);
|
||
IF OBJECT_ID('CK_ScoreRule_Version','C') IS NULL ALTER TABLE dbo.ScoreRule WITH CHECK ADD CONSTRAINT CK_ScoreRule_Version CHECK(RuleVersion>=1);
|
||
IF OBJECT_ID('CK_EventJudgeScoreSheet_Version','C') IS NULL ALTER TABLE dbo.EventJudgeScoreSheet WITH CHECK ADD CONSTRAINT CK_EventJudgeScoreSheet_Version CHECK(RuleVersion>=1 AND SheetVersion>=1);
|
||
IF OBJECT_ID('CK_EventScoreCorrection_Applicant','C') IS NULL ALTER TABLE dbo.EventScoreCorrection WITH CHECK ADD CONSTRAINT CK_EventScoreCorrection_Applicant CHECK((ApplyUserId IS NOT NULL AND ApplyRefereeId IS NULL) OR (ApplyUserId IS NULL AND ApplyRefereeId IS NOT NULL));
|
||
IF OBJECT_ID(N'dbo.CK_EventRegistrationItem_TeamIndex',N'C') IS NULL ALTER TABLE dbo.EventRegistrationItem WITH CHECK ADD CONSTRAINT CK_EventRegistrationItem_TeamIndex CHECK(TeamIndex IS NULL OR TeamIndex>0);
|
||
IF EXISTS(SELECT 1 FROM dbo.EventRegistrationItem item LEFT JOIN dbo.Team team ON team.Id=item.TeamId WHERE item.TeamId IS NOT NULL AND team.Id IS NULL) THROW 51024,N'EventRegistrationItem 存在无效 TeamId,停止升级。',1;
|
||
/* 3.2 外键:二期表引用一期表主键、以及二期表之间的引用关系 */
|
||
IF OBJECT_ID(N'dbo.[FK_RefereeApplication_Event]','F') IS NULL ALTER TABLE dbo.[RefereeApplication] WITH CHECK ADD CONSTRAINT [FK_RefereeApplication_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_RefereeApplication_AppUser]','F') IS NULL ALTER TABLE dbo.[RefereeApplication] WITH CHECK ADD CONSTRAINT [FK_RefereeApplication_AppUser] FOREIGN KEY([RefereeUserId]) REFERENCES dbo.[AppUser]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_CheckinTask_Event]','F') IS NULL ALTER TABLE dbo.[CheckinTask] WITH CHECK ADD CONSTRAINT [FK_CheckinTask_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_CheckinRecord_Task]','F') IS NULL ALTER TABLE dbo.[CheckinRecord] WITH CHECK ADD CONSTRAINT [FK_CheckinRecord_Task] FOREIGN KEY([TaskId]) REFERENCES dbo.[CheckinTask]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventRegistrationItem_Team]','F') IS NULL ALTER TABLE dbo.[EventRegistrationItem] WITH CHECK ADD CONSTRAINT [FK_EventRegistrationItem_Team] FOREIGN KEY([TeamId]) REFERENCES dbo.[Team]([Id]);
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventRegistrationItem]') AND name=N'IX_EventRegistrationItem_RegistrationId_TeamId') CREATE NONCLUSTERED INDEX [IX_EventRegistrationItem_RegistrationId_TeamId] ON dbo.[EventRegistrationItem]([RegistrationId],[TeamId]) INCLUDE([EventProjectGroupId],[TeamIndex]) WHERE [TeamId] IS NOT NULL;
|
||
IF EXISTS(SELECT 1 FROM dbo.EventRegistrationItem WHERE TeamId IS NOT NULL AND TeamIndex IS NOT NULL AND DeleteMark=0 GROUP BY RegistrationId,ProjectId,EventProjectGroupId,TeamId,TeamIndex HAVING COUNT_BIG(1)>1) THROW 51025,N'EventRegistrationItem 存在重复的来源团队队伍序号,停止创建唯一索引。',1;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventRegistrationItem]') AND name=N'UX_EventRegistrationItem_SourceTeamSquad_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventRegistrationItem_SourceTeamSquad_Active] ON dbo.[EventRegistrationItem]([RegistrationId],[ProjectId],[EventProjectGroupId],[TeamId],[TeamIndex]) WHERE [TeamId] IS NOT NULL AND [TeamIndex] IS NOT NULL AND [DeleteMark]=0;
|
||
IF OBJECT_ID(N'dbo.[FK_Referee_AppUser]','F') IS NULL ALTER TABLE dbo.[Referee] WITH CHECK ADD CONSTRAINT [FK_Referee_AppUser] FOREIGN KEY([AppUserId]) REFERENCES dbo.[AppUser]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventReferee_Event]','F') IS NULL ALTER TABLE dbo.[EventReferee] WITH CHECK ADD CONSTRAINT [FK_EventReferee_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventReferee_Referee]','F') IS NULL ALTER TABLE dbo.[EventReferee] WITH CHECK ADD CONSTRAINT [FK_EventReferee_Referee] FOREIGN KEY([RefereeId]) REFERENCES dbo.[Referee]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeAssignment_Session]','F') IS NULL ALTER TABLE dbo.[EventJudgeAssignment] WITH CHECK ADD CONSTRAINT [FK_EventJudgeAssignment_Session] FOREIGN KEY([SessionId]) REFERENCES dbo.[EventSession]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeAssignment_EventReferee]','F') IS NULL ALTER TABLE dbo.[EventJudgeAssignment] WITH CHECK ADD CONSTRAINT [FK_EventJudgeAssignment_EventReferee] FOREIGN KEY([EventRefereeId]) REFERENCES dbo.[EventReferee]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventVenue_Event]','F') IS NULL ALTER TABLE dbo.[EventVenue] WITH CHECK ADD CONSTRAINT [FK_EventVenue_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventSession_Venue]','F') IS NULL ALTER TABLE dbo.[EventSession] WITH CHECK ADD CONSTRAINT [FK_EventSession_Venue] FOREIGN KEY([VenueId]) REFERENCES dbo.[EventVenue]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventSession_ScoreRule]','F') IS NULL ALTER TABLE dbo.[EventSession] WITH CHECK ADD CONSTRAINT [FK_EventSession_ScoreRule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventSessionEntry_Session]','F') IS NULL ALTER TABLE dbo.[EventSessionEntry] WITH CHECK ADD CONSTRAINT [FK_EventSessionEntry_Session] FOREIGN KEY([SessionId]) REFERENCES dbo.[EventSession]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeTask_Entry]','F') IS NULL ALTER TABLE dbo.[EventJudgeTask] WITH CHECK ADD CONSTRAINT [FK_EventJudgeTask_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeTask_Assignment]','F') IS NULL ALTER TABLE dbo.[EventJudgeTask] WITH CHECK ADD CONSTRAINT [FK_EventJudgeTask_Assignment] FOREIGN KEY([JudgeAssignmentId]) REFERENCES dbo.[EventJudgeAssignment]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeTask_ScoreRule]','F') IS NULL ALTER TABLE dbo.[EventJudgeTask] WITH CHECK ADD CONSTRAINT [FK_EventJudgeTask_ScoreRule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_ScoreRuleItem_Rule]','F') IS NULL ALTER TABLE dbo.[ScoreRuleItem] WITH CHECK ADD CONSTRAINT [FK_ScoreRuleItem_Rule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreSheet_Task]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreSheet] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreSheet_Task] FOREIGN KEY([JudgeTaskId]) REFERENCES dbo.[EventJudgeTask]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreSheet_Entry]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreSheet] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreSheet_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreSheet_Rule]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreSheet] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreSheet_Rule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreAttachment_Sheet]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreAttachment] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreAttachment_Sheet] FOREIGN KEY([ScoreSheetId]) REFERENCES dbo.[EventJudgeScoreSheet]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventJudgeScoreDetail_Sheet]','F') IS NULL ALTER TABLE dbo.[EventJudgeScoreDetail] WITH CHECK ADD CONSTRAINT [FK_EventJudgeScoreDetail_Sheet] FOREIGN KEY([ScoreSheetId]) REFERENCES dbo.[EventJudgeScoreSheet]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventResultVersion_Result]','F') IS NULL ALTER TABLE dbo.[EventResultVersion] WITH CHECK ADD CONSTRAINT [FK_EventResultVersion_Result] FOREIGN KEY([EventResultId]) REFERENCES dbo.[EventResult]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventResultVersion_Entry]','F') IS NULL ALTER TABLE dbo.[EventResultVersion] WITH CHECK ADD CONSTRAINT [FK_EventResultVersion_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventResultVersion_Rule]','F') IS NULL ALTER TABLE dbo.[EventResultVersion] WITH CHECK ADD CONSTRAINT [FK_EventResultVersion_Rule] FOREIGN KEY([ScoreRuleId]) REFERENCES dbo.[ScoreRule]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventScoreCorrection_Entry]','F') IS NULL ALTER TABLE dbo.[EventScoreCorrection] WITH CHECK ADD CONSTRAINT [FK_EventScoreCorrection_Entry] FOREIGN KEY([SessionEntryId]) REFERENCES dbo.[EventSessionEntry]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventScoreCorrection_OriginalSheet]','F') IS NULL ALTER TABLE dbo.[EventScoreCorrection] WITH CHECK ADD CONSTRAINT [FK_EventScoreCorrection_OriginalSheet] FOREIGN KEY([OriginalScoreSheetId]) REFERENCES dbo.[EventJudgeScoreSheet]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventScoreCorrection_ApplyReferee]','F') IS NULL ALTER TABLE dbo.[EventScoreCorrection] WITH CHECK ADD CONSTRAINT [FK_EventScoreCorrection_ApplyReferee] FOREIGN KEY([ApplyRefereeId]) REFERENCES dbo.[Referee]([Id]);
|
||
IF OBJECT_ID(N'dbo.[FK_EventResultScreenCast_Event]','F') IS NULL ALTER TABLE dbo.[EventResultScreenCast] WITH CHECK ADD CONSTRAINT [FK_EventResultScreenCast_Event] FOREIGN KEY([EventId]) REFERENCES dbo.[EventInfo]([Id]);
|
||
/* 3.3 索引:UX_ 唯一索引 / IX_ 非聚集索引;WHERE DeleteMark=0 的过滤索引仅约束有效数据 */
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[Referee]') AND name=N'UX_Referee_Mobile_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_Referee_Mobile_Active] ON dbo.[Referee]([Mobile]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[Referee]') AND name=N'IX_Referee_AppUserId') CREATE NONCLUSTERED INDEX [IX_Referee_AppUserId] ON dbo.[Referee]([AppUserId]) WHERE [AppUserId] IS NOT NULL AND [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventReferee]') AND name=N'UX_EventReferee_Event_Referee_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventReferee_Event_Referee_Active] ON dbo.[EventReferee]([EventId],[RefereeId]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[RefereeApplication]') AND name=N'IX_RefereeApplication_Event_Status') CREATE NONCLUSTERED INDEX [IX_RefereeApplication_Event_Status] ON dbo.[RefereeApplication]([EventId],[ApplicationStatus],[DeleteMark]);
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinTask]') AND name=N'UX_CheckinTask_Event_Checkin_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_CheckinTask_Event_Checkin_Active] ON dbo.[CheckinTask]([EventId],[CheckinNo]) WHERE [DeleteMark]=0;
|
||
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Round_Person_Active' AND REPLACE(REPLACE(filter_definition,'[',''),']','') NOT LIKE N'%RegistrationPersonId IS NOT NULL%') DROP INDEX [UX_CheckinRecord_Task_Round_Person_Active] ON dbo.[CheckinRecord];
|
||
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Session_Person_Active') DROP INDEX [UX_CheckinRecord_Task_Session_Person_Active] ON dbo.[CheckinRecord];
|
||
IF COLUMNPROPERTY(OBJECT_ID(N'dbo.[CheckinRecord]'),N'RegistrationPersonId','AllowsNull')=0 ALTER TABLE dbo.[CheckinRecord] ALTER COLUMN [RegistrationPersonId] BIGINT NULL;
|
||
UPDATE dbo.[CheckinRecord] SET [RegistrationPersonId]=NULL WHERE [RegistrationPersonId]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Round_Person_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_CheckinRecord_Task_Round_Person_Active] ON dbo.[CheckinRecord]([TaskId],[Round],[RegistrationPersonId]) WHERE [DeleteMark]=0 AND [RegistrationPersonId] IS NOT NULL;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[CheckinRecord]') AND name=N'UX_CheckinRecord_Task_Session_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_CheckinRecord_Task_Session_Active] ON dbo.[CheckinRecord]([TaskId],[SessionKey]) WHERE [DeleteMark]=0 AND [SessionKey] IS NOT NULL;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventVenue]') AND name=N'UX_EventVenue_Event_Code_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventVenue_Event_Code_Active] ON dbo.[EventVenue]([EventId],[VenueCode]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSession]') AND name=N'UX_EventSession_Event_No_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventSession_Event_No_Active] ON dbo.[EventSession]([EventId],[SessionNo]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSession]') AND name=N'IX_EventSession_Event_Status') CREATE NONCLUSTERED INDEX [IX_EventSession_Event_Status] ON dbo.[EventSession]([EventId],[SessionStatus],[StartTime]);
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSessionEntry]') AND name=N'UX_EventSessionEntry_Session_Order_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventSessionEntry_Session_Order_Active] ON dbo.[EventSessionEntry]([SessionId],[PlayOrder]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventSessionEntry]') AND name=N'UX_EventSessionEntry_Session_No_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventSessionEntry_Session_No_Active] ON dbo.[EventSessionEntry]([SessionId],[EntryNo]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeAssignment]') AND name=N'UX_EventJudgeAssignment_Session_Role_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeAssignment_Session_Role_Active] ON dbo.[EventJudgeAssignment]([SessionId],[JudgeRole]) WHERE [DeleteMark]=0 AND [Status]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeTask]') AND name=N'IX_EventJudgeTask_User_Status') CREATE NONCLUSTERED INDEX [IX_EventJudgeTask_User_Status] ON dbo.[EventJudgeTask]([JudgeUserId],[TaskStatus],[ExpiresTime]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeTask]') AND name=N'UX_EventJudgeTask_Business_Version') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeTask_Business_Version] ON dbo.[EventJudgeTask]([SessionEntryId],[JudgeAssignmentId],[TaskVersion]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventScoreCorrection]') AND name=N'UX_EventScoreCorrection_OriginalSheet_Open') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventScoreCorrection_OriginalSheet_Open] ON dbo.[EventScoreCorrection]([OriginalScoreSheetId]) WHERE [DeleteMark]=0 AND [CorrectionStatus]>=0 AND [CorrectionStatus]<=30 AND [CorrectionStatus]<>20;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[ScoreRule]') AND name=N'UX_ScoreRule_Code_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_ScoreRule_Code_Active] ON dbo.[ScoreRule]([RuleCode]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[ScoreRuleItem]') AND name=N'UX_ScoreRuleItem_Rule_Role_Code_Active') CREATE UNIQUE NONCLUSTERED INDEX [UX_ScoreRuleItem_Rule_Role_Code_Active] ON dbo.[ScoreRuleItem]([ScoreRuleId],[JudgeRoleType],[ItemCode]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreSheet]') AND name=N'UX_EventJudgeScoreSheet_Idempotency') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreSheet_Idempotency] ON dbo.[EventJudgeScoreSheet]([IdempotencyKey]);
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreSheet]') AND name=N'UX_EventJudgeScoreSheet_Current') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreSheet_Current] ON dbo.[EventJudgeScoreSheet]([SessionEntryId],[JudgeAssignmentId]) WHERE [IsCurrent]=1 AND [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreAttachment]') AND name=N'UX_EventJudgeScoreAttachment_Idempotency') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreAttachment_Idempotency] ON dbo.[EventJudgeScoreAttachment]([ScoreSheetId],[IdempotencyKey]);
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreAttachment]') AND name=N'UX_EventJudgeScoreAttachment_Current') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventJudgeScoreAttachment_Current] ON dbo.[EventJudgeScoreAttachment]([ScoreSheetId],[AttachmentType]) WHERE [IsCurrent]=1 AND [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeScoreDetail]') AND name=N'IX_EventJudgeScoreDetail_Sheet') CREATE NONCLUSTERED INDEX [IX_EventJudgeScoreDetail_Sheet] ON dbo.[EventJudgeScoreDetail]([ScoreSheetId],[Sort]);
|
||
/* 集体项目按队员分别保存成绩;旧版仅以 SessionEntryId 唯一会导致第二名队员写入失败。 */
|
||
IF EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResult]') AND name=N'UX_EventResult_SessionEntry_Active'
|
||
AND (INDEX_COL(N'dbo.EventResult',N'UX_EventResult_SessionEntry_Active',1)<>N'SessionEntryId'
|
||
OR ISNULL(INDEX_COL(N'dbo.EventResult',N'UX_EventResult_SessionEntry_Active',2),N'')<>N'RegistrationPersonId'))
|
||
DROP INDEX [UX_EventResult_SessionEntry_Active] ON dbo.[EventResult];
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResult]') AND name=N'UX_EventResult_SessionEntry_Active')
|
||
CREATE UNIQUE NONCLUSTERED INDEX [UX_EventResult_SessionEntry_Active] ON dbo.[EventResult]([SessionEntryId],[RegistrationPersonId]) WHERE [SessionEntryId] IS NOT NULL AND [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResultVersion]') AND name=N'UX_EventResultVersion_Result_Version') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventResultVersion_Result_Version] ON dbo.[EventResultVersion]([EventResultId],[ResultVersion]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventJudgeMessage]') AND name=N'IX_EventJudgeMessage_Receiver_Unread') CREATE NONCLUSTERED INDEX [IX_EventJudgeMessage_Receiver_Unread] ON dbo.[EventJudgeMessage]([ReceiverUserId],[IsRead],[CreatedTime]) WHERE [DeleteMark]=0;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResultScreenCast]') AND name=N'IX_EventResultScreenCast_Event_Time') CREATE NONCLUSTERED INDEX [IX_EventResultScreenCast_Event_Time] ON dbo.[EventResultScreenCast]([EventId],[CastTime]) WHERE [DeleteMark]=0;
|
||
/* 同一赛事同一场地只允许保留一条投出中的投屏:先把重复的历史投屏置为“已替换(20)”,再创建唯一筛选索引兜底 */
|
||
;WITH ActiveCast AS (
|
||
SELECT Id,ROW_NUMBER() OVER(PARTITION BY EventId,VenueId ORDER BY CastTime DESC,Id DESC) AS rn
|
||
FROM dbo.EventResultScreenCast WHERE CastStatus=0 AND DeleteMark=0
|
||
)
|
||
UPDATE sc SET CastStatus=20,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
|
||
FROM dbo.EventResultScreenCast sc JOIN ActiveCast a ON a.Id=sc.Id WHERE a.rn>1;
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.[EventResultScreenCast]') AND name=N'UX_EventResultScreenCast_Current') CREATE UNIQUE NONCLUSTERED INDEX [UX_EventResultScreenCast_Current] ON dbo.[EventResultScreenCast]([EventId],[VenueId]) WHERE [CastStatus]=0 AND [DeleteMark]=0;
|
||
|
||
/* ====================================================================================
|
||
[4/9] 插入数据 · 初始化种子(统一“存在则更新、缺失才插入”的幂等写法,可重复执行)
|
||
顺序:4.1 计分规则(8条) -> 规则Id映射 -> 4.2 规则明细(505条,其中503条启用) -> 4.3 角色 -> 4.4 账号管理按钮 -> 4.5 角色菜单授权
|
||
==================================================================================== */
|
||
PRINT N'[4/9] 插入数据:初始化计分规则、规则明细、角色与菜单';
|
||
/* 4.1 八条计分规则(固定Id:3000规定赛/3100个人花样/3200两人同步花样/3300四人同步花样/3400两人车轮跳花样/3500三人交互绳花样/3600四人交互绳花样/3700表演赛):先按 RuleCode 更新,再插入缺失,Id冲突则报错 */
|
||
CREATE TABLE #RuleSeed(SourceId BIGINT PRIMARY KEY,RuleCode NVARCHAR(64),RuleName NVARCHAR(128),JudgeRoleSchemaJson NVARCHAR(2000),RuleConfigJson NVARCHAR(4000),RuleVersion INT,Status INT,Sort INT,DeleteMark BIT,CreatedUserId BIGINT,CreatedTime DATETIME2(3));
|
||
INSERT #RuleSeed VALUES (3000,N'ROPE_PRESCRIBED',N'规定赛',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判","min":1,"max":1}]},{"title":"创意编排裁判","slots":[{"code":"CJ","name":"创意编排裁判","min":1,"max":3}]},{"title":"完成质量裁判","slots":[{"code":"CQ","name":"完成质量裁判","min":1,"max":3}]}]',N'{"ruleType":"PRESCRIBED","baseScore":100,"scoreDecimals":2,"deductionUnit":5,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"CJ","symbol":"T1","label":"创意分","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1},{"roleType":"CQ","symbol":"T2","label":"完成分","sourceField":"RequiredScore","targetField":"RequiredScore","aggregate":"avg","sign":1},{"roleType":"T","symbol":"T3","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1}],"tieBreakers":["TotalScore","RequiredScore","PerformanceScore"]}',1,0,1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3100,N'ROPE_FREESTYLE_SINGLE',N'个人花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DP","name":"难度裁判-DP(力量体操裁判)","min":1,"max":2},{"code":"DM","name":"难度裁判-DM(多摇裁判)","min":1,"max":2},{"code":"DR","name":"难度裁判-DR(绳子运用裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_SINGLE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":3,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DP","symbol":"dDP","label":"力量体操难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DM","symbol":"dDM","label":"多摇难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DR","symbol":"dDR","label":"绳子运用难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DP","symbol":"qP","label":"力量体操规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DM","symbol":"qM","label":"多摇规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DR","symbol":"qR","label":"绳子运用规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3200,N'ROPE_FREESTYLE_DOUBLE_SYNC',N'两人同步花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DP","name":"难度裁判-DP(力量体操裁判)","min":1,"max":2},{"code":"DM","name":"难度裁判-DM(多摇裁判)","min":1,"max":2},{"code":"DR","name":"难度裁判-DR(绳子运用裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_DOUBLE_SYNC","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":3,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DP","symbol":"dDP","label":"力量体操难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DM","symbol":"dDM","label":"多摇难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DR","symbol":"dDR","label":"绳子运用难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DP","symbol":"qP","label":"力量体操规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DM","symbol":"qM","label":"多摇规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DR","symbol":"qR","label":"绳子运用规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3300,N'ROPE_FREESTYLE_QUAD_SYNC',N'四人同步花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DP","name":"难度裁判-DP(力量体操裁判)","min":1,"max":2},{"code":"DM","name":"难度裁判-DM(多摇裁判)","min":1,"max":2},{"code":"DR","name":"难度裁判-DR(绳子运用裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_QUAD_SYNC","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":3,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DP","symbol":"dDP","label":"力量体操难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DM","symbol":"dDM","label":"多摇难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DR","symbol":"dDR","label":"绳子运用难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DP","symbol":"qP","label":"力量体操规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DM","symbol":"qM","label":"多摇规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"DR","symbol":"qR","label":"绳子运用规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","aggregateDecimals":0,"sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3400,N'ROPE_FREESTYLE_WHEEL_PAIR',N'两人车轮跳花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DA","name":"难度裁判-DA(运动员A难度裁判)","min":1,"max":2},{"code":"DB","name":"难度裁判-DB(运动员B难度裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_WHEEL","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":2,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DA","symbol":"dA","label":"运动员A难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DB","symbol":"dB","label":"运动员B难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"Q","label":"规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"max","sign":1,"factor":"Q","factorWeight":0.025},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3500,N'ROPE_FREESTYLE_WIRE_TRIPLE',N'三人交互绳花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DJ","name":"难度裁判-DJ(跳绳运动员难度裁判)","min":1,"max":2},{"code":"DT","name":"难度裁判-DT(摇绳运动员难度裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_WIRE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":1,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DJ","symbol":"dJ","label":"跳绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1.4},{"roleType":"DT","symbol":"dT","label":"摇绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.033},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","PerformanceScore","DifficultyScore"]}',1,0,6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3600,N'ROPE_FREESTYLE_WIRE_QUAD',N'四人交互绳花样(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DJ","name":"难度裁判-DJ(跳绳运动员难度裁判)","min":1,"max":2},{"code":"DT","name":"难度裁判-DT(摇绳运动员难度裁判)","min":1,"max":2}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":2}]}]',N'{"ruleType":"FREESTYLE_WIRE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":1,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DJ","symbol":"dJ","label":"跳绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1.4},{"roleType":"DT","symbol":"dT","label":"摇绳运动员难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.033},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","PerformanceScore","DifficultyScore"]}',1,0,7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3700,N'ROPE_SHOWCASE',N'表演赛(精英级)',N'[{"title":"主裁判","slots":[{"code":"T","name":"主裁判-T","min":1,"max":1}]},{"title":"难度裁判","slots":[{"code":"DGA","name":"难度裁判-A组裁判","min":1,"max":3,"categories":["DP+DM (个人绳)","DA (车轮跳)","DT (交互绳)","DT (旅行跳)"]},{"code":"DGB","name":"难度裁判-B组裁判","min":1,"max":3,"categories":["DR (个人绳)","DB (车轮跳)","DJ (交互绳)","DL (长绳)"]}]},{"title":"表现裁判","slots":[{"code":"P","name":"表现裁判-P","min":1,"max":3}]}]',N'{"ruleType":"SHOWCASE","totalMode":"factor","baseScore":0,"scoreDecimals":2,"difficultyDivisor":2,"correctionNeedApproval":false,"roleAggregations":[{"roleType":"DGA","symbol":"A","label":"A组难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"DGB","symbol":"B","label":"B组难度","sourceField":"DifficultyScore","targetField":"DifficultyScore","aggregate":"avg","sign":1,"factor":"D","factorWeight":1},{"roleType":"P","symbol":"P","label":"表现","sourceField":"PerformanceScore","targetField":"PerformanceScore","aggregate":"avg","sign":1,"factor":"P","factorWeight":0.05},{"roleType":"T","symbol":"Q","label":"规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"max","sign":1,"factor":"Q","factorWeight":0.05},{"roleType":"T","symbol":"M","label":"扣分","sourceField":"DeductionScore","targetField":"DeductionScore","aggregate":"sum","sign":-1,"factor":"M","factorWeight":1}],"tieBreakers":["TotalScore","-DeductionScore","RequiredScore","PerformanceScore","DifficultyScore"]}',1,0,8,0,1000,N'2026-08-19T00:00:00');
|
||
|
||
-- 两人/四人同步花样由主裁录入互动配合,缺失数 qI 与 DP/DM/DR 一同参与 Q。
|
||
UPDATE #RuleSeed
|
||
SET RuleConfigJson=JSON_MODIFY(
|
||
RuleConfigJson,
|
||
N'append $.roleAggregations',
|
||
JSON_QUERY(N'{"roleType":"T","symbol":"qI","label":"互动配合规定元素缺失","sourceField":"RequiredMissingCount","targetField":"RequiredScore","aggregate":"avg","sign":1,"factor":"Q","factorWeight":0.025}'))
|
||
WHERE RuleCode IN (N'ROPE_FREESTYLE_DOUBLE_SYNC',N'ROPE_FREESTYLE_QUAD_SYNC');
|
||
|
||
UPDATE r SET RuleName=s.RuleName,JudgeRoleSchemaJson=s.JudgeRoleSchemaJson,RuleConfigJson=s.RuleConfigJson,
|
||
RuleVersion=s.RuleVersion,Status=s.Status,Sort=s.Sort,DeleteMark=0,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
|
||
FROM dbo.ScoreRule r JOIN #RuleSeed s ON s.RuleCode=r.RuleCode AND r.DeleteMark=0
|
||
WHERE EXISTS(SELECT r.RuleName,r.JudgeRoleSchemaJson,r.RuleConfigJson,r.RuleVersion,r.Status,r.Sort,r.DeleteMark
|
||
EXCEPT SELECT s.RuleName,s.JudgeRoleSchemaJson,s.RuleConfigJson,s.RuleVersion,s.Status,s.Sort,CONVERT(BIT,0));
|
||
INSERT dbo.ScoreRule(Id,RuleCode,RuleName,JudgeRoleSchemaJson,RuleConfigJson,RuleVersion,Status,Sort,DeleteMark,CreatedUserId,CreatedTime)
|
||
SELECT s.SourceId,s.RuleCode,s.RuleName,s.JudgeRoleSchemaJson,s.RuleConfigJson,s.RuleVersion,s.Status,s.Sort,s.DeleteMark,s.CreatedUserId,s.CreatedTime
|
||
FROM #RuleSeed s WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRule r WHERE r.RuleCode=s.RuleCode AND r.DeleteMark=0)
|
||
AND NOT EXISTS(SELECT 1 FROM dbo.ScoreRule r WHERE r.Id=s.SourceId);
|
||
IF EXISTS(SELECT 1 FROM #RuleSeed s WHERE NOT EXISTS(SELECT 1 FROM dbo.ScoreRule r WHERE r.RuleCode=s.RuleCode AND r.DeleteMark=0))
|
||
THROW 51003,N'计分规则种子ID被占用且规则编码不存在,无法安全初始化。',1;
|
||
|
||
/* 规则“源Id->实际Id”映射:兼容目标库 Id 被占用时按 RuleCode 对齐,供规则明细写入外键 ScoreRuleId */
|
||
CREATE TABLE #RuleMap(SourceId BIGINT PRIMARY KEY,TargetId BIGINT NOT NULL);
|
||
INSERT #RuleMap SELECT s.SourceId,r.Id FROM #RuleSeed s JOIN dbo.ScoreRule r ON r.RuleCode=s.RuleCode AND r.DeleteMark=0;
|
||
/* 4.2 计分规则评分项明细(505 条种子,其中 503 条启用;Id段 30xx规定赛/31xx个人花样/32xx两人同步花样/33xx四人同步花样/34xx两人车轮跳花样/35xx三人交互绳花样/36xx四人交互绳花样/37xx表演赛):同样先更新后插入 */
|
||
CREATE TABLE #ItemSeed(Id BIGINT PRIMARY KEY,SourceRuleId BIGINT,JudgeRoleType NVARCHAR(16),ItemCode NVARCHAR(64),ItemName NVARCHAR(128),ItemType INT,ParentItemCode NVARCHAR(64),UnitValue DECIMAL(18,4),MinValue DECIMAL(18,4),MaxValue DECIMAL(18,4),StepValue DECIMAL(18,4),DefaultValue DECIMAL(18,4),CalcMode INT,ScoreDimension INT,IsRequired BIT,ExtensionJson NVARCHAR(2000),Sort INT,DeleteMark BIT,CreatedUserId BIGINT,CreatedTime DATETIME2(3));
|
||
INSERT #ItemSeed VALUES (3001,3000,N'CJ',N'CJ_ARRANGE',N'过渡连接、成套创编、场地运用',6,NULL,1,0,10,1,0,1,2,1,N'{"inputMode":"score","fineTuneStep":0.5}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3002,3000,N'CJ',N'CJ_EFFECT',N'现场表现效果',6,NULL,1,0,10,1,0,1,2,1,N'{"inputMode":"score","fineTuneStep":0.5}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3003,3000,N'CQ',N'CQ_ACCURACY',N'动作的准确性',6,NULL,1,0,30,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"maxByScope":{"personal":30,"team":20}}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3004,3000,N'CQ',N'CQ_PROFICIENCY',N'动作的熟练性',6,NULL,1,0,20,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"maxByScope":{"personal":20,"team":15}}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3005,3000,N'CQ',N'CQ_SYNCHRONY',N'动作的合拍性',6,NULL,1,0,30,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"maxByScope":{"personal":30,"team":15}}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3006,3000,N'CQ',N'CQ_ABILITY_CONSISTENCY',N'运动能力一致性',6,NULL,1,0,15,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"scopes":["team"],"maxByScope":{"team":15}}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3007,3000,N'CQ',N'CQ_SKILL_CONSISTENCY',N'表演技巧一致性',6,NULL,1,0,15,1,0,1,3,1,N'{"inputMode":"score","fineTuneStep":0.5,"scopes":["team"],"maxByScope":{"team":15}}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3008,3000,N'T',N'T_DED_ROPE_SALUTE',N'赛前或赛后未行绳礼(每队)',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3009,3000,N'T',N'T_DED_APPEARANCE',N'运动员的头发、着装、仪容不符合规定,佩戴饰物、饰物掉落',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3010,3000,N'T',N'T_DED_CHANGE_1X8',N'更改1×8拍规定元素内容',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3011,3000,N'T',N'T_DED_INTERRUPT',N'套路中断4秒以上',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3012,3000,N'T',N'T_DED_AREA_FOUL',N'场地犯规(踩线、出界)',4,NULL,5,0,20,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","remark":"每项每次扣5分"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3013,3000,N'T',N'T_DQ_CALL_TIMEOUT',N'运动员(队)被叫超过60秒未上场',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3014,3000,N'T',N'T_DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3015,3000,N'T',N'T_DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3016,3000,N'T',N'T_DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3017,3000,N'T',N'T_DQ_MISCONDUCT',N'比赛中嚼口香糖、不文明用语等',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3018,3000,N'T',N'T_DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3019,3000,N'T',N'T_DQ_CHANGE_4X8',N'更改4×8拍规定元素内容',5,NULL,0,0,1,1,0,2,0,0,N'{"inputMode":"reason"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3101,3100,N'DP',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3102,3100,N'DP',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3103,3100,N'DP',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3104,3100,N'DP',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3105,3100,N'DP',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3106,3100,N'DP',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3107,3100,N'DP',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3108,3100,N'DP',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',8,0,1000,N'2026-08-19T00:00:00'),
|
||
(3109,3100,N'DP',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',9,0,1000,N'2026-08-19T00:00:00'),
|
||
(3110,3100,N'DP',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',10,0,1000,N'2026-08-19T00:00:00'),
|
||
(3111,3100,N'DM',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3112,3100,N'DM',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3113,3100,N'DM',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3114,3100,N'DM',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',14,0,1000,N'2026-08-19T00:00:00'),
|
||
(3115,3100,N'DM',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',15,0,1000,N'2026-08-19T00:00:00'),
|
||
(3116,3100,N'DM',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',16,0,1000,N'2026-08-19T00:00:00'),
|
||
(3117,3100,N'DM',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',17,0,1000,N'2026-08-19T00:00:00'),
|
||
(3118,3100,N'DM',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',18,0,1000,N'2026-08-19T00:00:00'),
|
||
(3119,3100,N'DM',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',19,0,1000,N'2026-08-19T00:00:00'),
|
||
(3120,3100,N'DM',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',20,0,1000,N'2026-08-19T00:00:00'),
|
||
(3121,3100,N'DR',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3122,3100,N'DR',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3123,3100,N'DR',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3124,3100,N'DR',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3125,3100,N'DR',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3126,3100,N'DR',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3127,3100,N'DR',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3128,3100,N'DR',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3129,3100,N'DR',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3130,3100,N'DR',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3131,3100,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": 1}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3132,3100,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": -1}',32,0,1000,N'2026-08-19T00:00:00'),
|
||
(3133,3100,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "MUSIC", "dimensionWeight": 0.2, "baseValue": 12.0}',33,0,1000,N'2026-08-19T00:00:00'),
|
||
(3134,3100,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": 1}',34,0,1000,N'2026-08-19T00:00:00'),
|
||
(3135,3100,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": -1}',35,0,1000,N'2026-08-19T00:00:00'),
|
||
(3136,3100,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "QUALITY", "dimensionWeight": 0.25, "baseValue": 12.0}',36,0,1000,N'2026-08-19T00:00:00'),
|
||
(3137,3100,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": 1}',37,0,1000,N'2026-08-19T00:00:00'),
|
||
(3138,3100,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": -1}',38,0,1000,N'2026-08-19T00:00:00'),
|
||
(3139,3100,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "ENTERTAINMENT", "dimensionWeight": 0.25, "baseValue": 12.0}',39,0,1000,N'2026-08-19T00:00:00'),
|
||
(3140,3100,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": 1}',40,0,1000,N'2026-08-19T00:00:00'),
|
||
(3141,3100,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": -1}',41,0,1000,N'2026-08-19T00:00:00'),
|
||
(3142,3100,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "CREATIVITY", "dimensionWeight": 0.15, "baseValue": 12.0}',42,0,1000,N'2026-08-19T00:00:00'),
|
||
(3143,3100,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": 1}',43,0,1000,N'2026-08-19T00:00:00'),
|
||
(3144,3100,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": -1}',44,0,1000,N'2026-08-19T00:00:00'),
|
||
(3145,3100,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "VARIETY", "dimensionWeight": 0.15, "baseValue": 12.0}',45,0,1000,N'2026-08-19T00:00:00'),
|
||
(3146,3100,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode": "count", "unitLabel": "次", "isFailureCount": true, "remark": "表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',46,0,1000,N'2026-08-19T00:00:00'),
|
||
(3147,3100,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次", "stepDeductions": [0.05, 0.075, 0.1], "remark": "第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',47,0,1000,N'2026-08-19T00:00:00'),
|
||
(3148,3100,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',48,0,1000,N'2026-08-19T00:00:00'),
|
||
(3149,3100,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',49,0,1000,N'2026-08-19T00:00:00'),
|
||
(3150,3100,N'DP',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3151,3100,N'DP',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3152,3100,N'DP',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3154,3100,N'DM',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3155,3100,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,54,0,1000,N'2026-08-19T00:00:00'),
|
||
(3156,3100,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,55,0,1000,N'2026-08-19T00:00:00'),
|
||
(3157,3100,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,56,0,1000,N'2026-08-19T00:00:00'),
|
||
(3158,3100,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,57,0,1000,N'2026-08-19T00:00:00'),
|
||
(3159,3100,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,58,0,1000,N'2026-08-19T00:00:00'),
|
||
(3160,3100,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,59,0,1000,N'2026-08-19T00:00:00'),
|
||
(3161,3100,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,60,0,1000,N'2026-08-19T00:00:00'),
|
||
(3162,3100,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,61,0,1000,N'2026-08-19T00:00:00'),
|
||
(3163,3100,N'DM',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3164,3100,N'DM',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3165,3100,N'DR',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3166,3100,N'DR',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3167,3100,N'DR',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3201,3200,N'DP',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3202,3200,N'DP',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3203,3200,N'DP',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3204,3200,N'DP',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3205,3200,N'DP',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3206,3200,N'DP',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3207,3200,N'DP',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3208,3200,N'DP',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',8,0,1000,N'2026-08-19T00:00:00'),
|
||
(3209,3200,N'DP',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',9,0,1000,N'2026-08-19T00:00:00'),
|
||
(3210,3200,N'DP',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',10,0,1000,N'2026-08-19T00:00:00'),
|
||
(3211,3200,N'DM',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3212,3200,N'DM',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3213,3200,N'DM',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3214,3200,N'DM',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',14,0,1000,N'2026-08-19T00:00:00'),
|
||
(3215,3200,N'DM',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',15,0,1000,N'2026-08-19T00:00:00'),
|
||
(3216,3200,N'DM',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',16,0,1000,N'2026-08-19T00:00:00'),
|
||
(3217,3200,N'DM',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',17,0,1000,N'2026-08-19T00:00:00'),
|
||
(3218,3200,N'DM',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',18,0,1000,N'2026-08-19T00:00:00'),
|
||
(3219,3200,N'DM',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',19,0,1000,N'2026-08-19T00:00:00'),
|
||
(3220,3200,N'DM',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',20,0,1000,N'2026-08-19T00:00:00'),
|
||
(3221,3200,N'DR',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3222,3200,N'DR',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3223,3200,N'DR',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3224,3200,N'DR',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3225,3200,N'DR',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3226,3200,N'DR',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3227,3200,N'DR',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3228,3200,N'DR',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3229,3200,N'DR',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3230,3200,N'DR',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3231,3200,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": 1}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3232,3200,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": -1}',32,0,1000,N'2026-08-19T00:00:00'),
|
||
(3233,3200,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "MUSIC", "dimensionWeight": 0.2, "baseValue": 12.0}',33,0,1000,N'2026-08-19T00:00:00'),
|
||
(3234,3200,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": 1}',34,0,1000,N'2026-08-19T00:00:00'),
|
||
(3235,3200,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": -1}',35,0,1000,N'2026-08-19T00:00:00'),
|
||
(3236,3200,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "QUALITY", "dimensionWeight": 0.25, "baseValue": 12.0}',36,0,1000,N'2026-08-19T00:00:00'),
|
||
(3237,3200,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": 1}',37,0,1000,N'2026-08-19T00:00:00'),
|
||
(3238,3200,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": -1}',38,0,1000,N'2026-08-19T00:00:00'),
|
||
(3239,3200,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "ENTERTAINMENT", "dimensionWeight": 0.25, "baseValue": 12.0}',39,0,1000,N'2026-08-19T00:00:00'),
|
||
(3240,3200,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": 1}',40,0,1000,N'2026-08-19T00:00:00'),
|
||
(3241,3200,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": -1}',41,0,1000,N'2026-08-19T00:00:00'),
|
||
(3242,3200,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "CREATIVITY", "dimensionWeight": 0.15, "baseValue": 12.0}',42,0,1000,N'2026-08-19T00:00:00'),
|
||
(3243,3200,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": 1}',43,0,1000,N'2026-08-19T00:00:00'),
|
||
(3244,3200,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": -1}',44,0,1000,N'2026-08-19T00:00:00'),
|
||
(3245,3200,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "VARIETY", "dimensionWeight": 0.15, "baseValue": 12.0}',45,0,1000,N'2026-08-19T00:00:00'),
|
||
(3246,3200,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode": "count", "unitLabel": "次", "isFailureCount": true, "remark": "表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',46,0,1000,N'2026-08-19T00:00:00'),
|
||
(3247,3200,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次", "stepDeductions": [0.05, 0.075, 0.1], "remark": "第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',47,0,1000,N'2026-08-19T00:00:00'),
|
||
(3248,3200,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',48,0,1000,N'2026-08-19T00:00:00'),
|
||
(3249,3200,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',49,0,1000,N'2026-08-19T00:00:00'),
|
||
(3250,3200,N'DP',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3251,3200,N'DP',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3252,3200,N'DP',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3253,3200,N'T',N'REQ_INTERACTION',N'互动配合',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',53,1,1000,N'2026-08-19T00:00:00'),
|
||
(3254,3200,N'DM',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3255,3200,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,55,0,1000,N'2026-08-19T00:00:00'),
|
||
(3256,3200,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,56,0,1000,N'2026-08-19T00:00:00'),
|
||
(3257,3200,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,57,0,1000,N'2026-08-19T00:00:00'),
|
||
(3258,3200,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,58,0,1000,N'2026-08-19T00:00:00'),
|
||
(3259,3200,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,59,0,1000,N'2026-08-19T00:00:00'),
|
||
(3260,3200,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,60,0,1000,N'2026-08-19T00:00:00'),
|
||
(3261,3200,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,61,0,1000,N'2026-08-19T00:00:00'),
|
||
(3262,3200,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,62,0,1000,N'2026-08-19T00:00:00'),
|
||
(3263,3200,N'DM',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3264,3200,N'DM',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3265,3200,N'DR',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3266,3200,N'DR',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3267,3200,N'DR',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3268,3200,N'T',N'REQUIRED_MISSING',N'互动配合规定元素缺失(个)',2,NULL,NULL,0,4,0.5,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',55,0,1000,N'2026-08-19T00:00:00'),
|
||
(3269,3200,N'T',N'REQ_INTERACTION_N3_PLUS',N'互动配合(3级及以上)',2,NULL,1,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',53,0,1000,N'2026-08-19T00:00:00'),
|
||
(3270,3200,N'T',N'REQ_INTERACTION_N2_MINUS',N'互动配合(2级及以下)',2,NULL,0.5,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',54,0,1000,N'2026-08-19T00:00:00'),
|
||
(3301,3300,N'DP',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3302,3300,N'DP',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3303,3300,N'DP',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3304,3300,N'DP',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3305,3300,N'DP',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3306,3300,N'DP',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3307,3300,N'DP',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3308,3300,N'DP',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',8,0,1000,N'2026-08-19T00:00:00'),
|
||
(3309,3300,N'DP',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',9,0,1000,N'2026-08-19T00:00:00'),
|
||
(3310,3300,N'DP',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',10,0,1000,N'2026-08-19T00:00:00'),
|
||
(3311,3300,N'DM',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3312,3300,N'DM',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3313,3300,N'DM',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3314,3300,N'DM',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',14,0,1000,N'2026-08-19T00:00:00'),
|
||
(3315,3300,N'DM',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',15,0,1000,N'2026-08-19T00:00:00'),
|
||
(3316,3300,N'DM',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',16,0,1000,N'2026-08-19T00:00:00'),
|
||
(3317,3300,N'DM',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',17,0,1000,N'2026-08-19T00:00:00'),
|
||
(3318,3300,N'DM',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',18,0,1000,N'2026-08-19T00:00:00'),
|
||
(3319,3300,N'DM',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',19,0,1000,N'2026-08-19T00:00:00'),
|
||
(3320,3300,N'DM',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',20,0,1000,N'2026-08-19T00:00:00'),
|
||
(3321,3300,N'DR',N'DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3322,3300,N'DR',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3323,3300,N'DR',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3324,3300,N'DR',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3325,3300,N'DR',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3326,3300,N'DR',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3327,3300,N'DR',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3328,3300,N'DR',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3329,3300,N'DR',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3330,3300,N'DR',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode": "count", "unitLabel": "个"}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3331,3300,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": 1}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3332,3300,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "MUSIC", "adjustSign": -1}',32,0,1000,N'2026-08-19T00:00:00'),
|
||
(3333,3300,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "MUSIC", "dimensionWeight": 0.2, "baseValue": 12.0}',33,0,1000,N'2026-08-19T00:00:00'),
|
||
(3334,3300,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": 1}',34,0,1000,N'2026-08-19T00:00:00'),
|
||
(3335,3300,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "QUALITY", "adjustSign": -1}',35,0,1000,N'2026-08-19T00:00:00'),
|
||
(3336,3300,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "QUALITY", "dimensionWeight": 0.25, "baseValue": 12.0}',36,0,1000,N'2026-08-19T00:00:00'),
|
||
(3337,3300,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": 1}',37,0,1000,N'2026-08-19T00:00:00'),
|
||
(3338,3300,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "ENTERTAINMENT", "adjustSign": -1}',38,0,1000,N'2026-08-19T00:00:00'),
|
||
(3339,3300,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "ENTERTAINMENT", "dimensionWeight": 0.25, "baseValue": 12.0}',39,0,1000,N'2026-08-19T00:00:00'),
|
||
(3340,3300,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": 1}',40,0,1000,N'2026-08-19T00:00:00'),
|
||
(3341,3300,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "CREATIVITY", "adjustSign": -1}',41,0,1000,N'2026-08-19T00:00:00'),
|
||
(3342,3300,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "CREATIVITY", "dimensionWeight": 0.15, "baseValue": 12.0}',42,0,1000,N'2026-08-19T00:00:00'),
|
||
(3343,3300,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": 1}',43,0,1000,N'2026-08-19T00:00:00'),
|
||
(3344,3300,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode": "count", "unitLabel": "次", "dimensionCode": "VARIETY", "adjustSign": -1}',44,0,1000,N'2026-08-19T00:00:00'),
|
||
(3345,3300,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode": "score", "isAuto": true, "dimensionCode": "VARIETY", "dimensionWeight": 0.15, "baseValue": 12.0}',45,0,1000,N'2026-08-19T00:00:00'),
|
||
(3346,3300,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode": "count", "unitLabel": "次", "isFailureCount": true, "remark": "表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',46,0,1000,N'2026-08-19T00:00:00'),
|
||
(3347,3300,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次", "stepDeductions": [0.05, 0.075, 0.1], "remark": "第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',47,0,1000,N'2026-08-19T00:00:00'),
|
||
(3348,3300,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',48,0,1000,N'2026-08-19T00:00:00'),
|
||
(3349,3300,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode": "count", "unitLabel": "次"}',49,0,1000,N'2026-08-19T00:00:00'),
|
||
(3350,3300,N'DP',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3351,3300,N'DP',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3352,3300,N'DP',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3353,3300,N'T',N'REQ_INTERACTION',N'互动配合',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',53,1,1000,N'2026-08-19T00:00:00'),
|
||
(3354,3300,N'DM',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3355,3300,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,55,0,1000,N'2026-08-19T00:00:00'),
|
||
(3356,3300,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,56,0,1000,N'2026-08-19T00:00:00'),
|
||
(3357,3300,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,57,0,1000,N'2026-08-19T00:00:00'),
|
||
(3358,3300,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,58,0,1000,N'2026-08-19T00:00:00'),
|
||
(3359,3300,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,59,0,1000,N'2026-08-19T00:00:00'),
|
||
(3360,3300,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,60,0,1000,N'2026-08-19T00:00:00'),
|
||
(3361,3300,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,61,0,1000,N'2026-08-19T00:00:00'),
|
||
(3362,3300,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,62,0,1000,N'2026-08-19T00:00:00'),
|
||
(3363,3300,N'DM',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3364,3300,N'DM',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3365,3300,N'DR',N'REQUIRED_N3_PLUS',N'3级及以上规定元素数',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3366,3300,N'DR',N'REQUIRED_N2_MINUS',N'2级及以下规定元素数',2,NULL,0.5,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3367,3300,N'DR',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3368,3300,N'T',N'REQUIRED_MISSING',N'互动配合规定元素缺失(个)',2,NULL,NULL,0,4,0.5,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',55,0,1000,N'2026-08-19T00:00:00'),
|
||
(3369,3300,N'T',N'REQ_INTERACTION_N3_PLUS',N'互动配合(3级及以上)',2,NULL,1,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',53,0,1000,N'2026-08-19T00:00:00'),
|
||
(3370,3300,N'T',N'REQ_INTERACTION_N2_MINUS',N'互动配合(2级及以下)',2,NULL,0.5,0,50,1,0,0,3,1,N'{"inputMode":"count","unitLabel":"个"}',54,0,1000,N'2026-08-19T00:00:00'),
|
||
(3401,3400,N'DA',N'DIFF_LEVEL_0',N'0 级',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3402,3400,N'DA',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3403,3400,N'DA',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3404,3400,N'DA',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3405,3400,N'DA',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3406,3400,N'DA',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3407,3400,N'DA',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3408,3400,N'DA',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',8,0,1000,N'2026-08-19T00:00:00'),
|
||
(3409,3400,N'DA',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',9,0,1000,N'2026-08-19T00:00:00'),
|
||
(3410,3400,N'DA',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"A"}',10,0,1000,N'2026-08-19T00:00:00'),
|
||
(3411,3400,N'DB',N'DIFF_LEVEL_0',N'0 级',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3412,3400,N'DB',N'DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3413,3400,N'DB',N'DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3414,3400,N'DB',N'DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',14,0,1000,N'2026-08-19T00:00:00'),
|
||
(3415,3400,N'DB',N'DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',15,0,1000,N'2026-08-19T00:00:00'),
|
||
(3416,3400,N'DB',N'DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',16,0,1000,N'2026-08-19T00:00:00'),
|
||
(3417,3400,N'DB',N'DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',17,0,1000,N'2026-08-19T00:00:00'),
|
||
(3418,3400,N'DB',N'DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',18,0,1000,N'2026-08-19T00:00:00'),
|
||
(3419,3400,N'DB',N'DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',19,0,1000,N'2026-08-19T00:00:00'),
|
||
(3420,3400,N'DB',N'DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"B"}',20,0,1000,N'2026-08-19T00:00:00'),
|
||
(3421,3400,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3422,3400,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3423,3400,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3424,3400,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3425,3400,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3426,3400,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3427,3400,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3428,3400,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3429,3400,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3430,3400,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3431,3400,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3432,3400,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',32,0,1000,N'2026-08-19T00:00:00'),
|
||
(3433,3400,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',33,0,1000,N'2026-08-19T00:00:00'),
|
||
(3434,3400,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',34,0,1000,N'2026-08-19T00:00:00'),
|
||
(3435,3400,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',35,0,1000,N'2026-08-19T00:00:00'),
|
||
(3436,3400,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',36,0,1000,N'2026-08-19T00:00:00'),
|
||
(3437,3400,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',37,0,1000,N'2026-08-19T00:00:00'),
|
||
(3438,3400,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',38,0,1000,N'2026-08-19T00:00:00'),
|
||
(3439,3400,N'T',N'T_INTERVAL',N'间歇',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',39,0,1000,N'2026-08-19T00:00:00'),
|
||
(3440,3400,N'T',N'REQ_STRENGTH_GYMNASTICS',N'力量和体操',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',40,0,1000,N'2026-08-19T00:00:00'),
|
||
(3441,3400,N'T',N'REQ_MULTIPLE_ROPE',N'多摇',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',41,0,1000,N'2026-08-19T00:00:00'),
|
||
(3442,3400,N'T',N'REQ_ROPE_MANIPULATION',N'绳子运用',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',42,0,1000,N'2026-08-19T00:00:00'),
|
||
(3443,3400,N'T',N'REQ_INTERACTION',N'互动配合',2,NULL,1,0,50,1,0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',43,0,1000,N'2026-08-19T00:00:00'),
|
||
(3444,3400,N'T',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0,4,1,0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":4.0}',44,0,1000,N'2026-08-19T00:00:00'),
|
||
(3445,3400,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,45,0,1000,N'2026-08-19T00:00:00'),
|
||
(3446,3400,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,46,0,1000,N'2026-08-19T00:00:00'),
|
||
(3447,3400,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,47,0,1000,N'2026-08-19T00:00:00'),
|
||
(3448,3400,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,48,0,1000,N'2026-08-19T00:00:00'),
|
||
(3449,3400,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,49,0,1000,N'2026-08-19T00:00:00'),
|
||
(3450,3400,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,50,0,1000,N'2026-08-19T00:00:00'),
|
||
(3451,3400,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,51,0,1000,N'2026-08-19T00:00:00'),
|
||
(3452,3400,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,52,0,1000,N'2026-08-19T00:00:00'),
|
||
(3501,3500,N'DJ',N'DIFF_LEVEL_0',N'0 级(间歇)',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3502,3500,N'DJ',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3503,3500,N'DJ',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3504,3500,N'DJ',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3505,3500,N'DJ',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3506,3500,N'DJ',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3507,3500,N'DJ',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3508,3500,N'DJ',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',8,0,1000,N'2026-08-19T00:00:00'),
|
||
(3509,3500,N'DJ',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',9,0,1000,N'2026-08-19T00:00:00'),
|
||
(3510,3500,N'DJ',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',10,0,1000,N'2026-08-19T00:00:00'),
|
||
(3511,3500,N'DJ',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3512,3500,N'DJ',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3513,3500,N'DJ',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3514,3500,N'DJ',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',14,0,1000,N'2026-08-19T00:00:00'),
|
||
(3515,3500,N'DJ',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',15,0,1000,N'2026-08-19T00:00:00'),
|
||
(3516,3500,N'DJ',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',16,0,1000,N'2026-08-19T00:00:00'),
|
||
(3517,3500,N'DT',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',17,0,1000,N'2026-08-19T00:00:00'),
|
||
(3518,3500,N'DT',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',18,0,1000,N'2026-08-19T00:00:00'),
|
||
(3519,3500,N'DT',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',19,0,1000,N'2026-08-19T00:00:00'),
|
||
(3520,3500,N'DT',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',20,0,1000,N'2026-08-19T00:00:00'),
|
||
(3521,3500,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3522,3500,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3523,3500,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3524,3500,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3525,3500,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3526,3500,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3527,3500,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3528,3500,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3529,3500,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3530,3500,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3531,3500,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3532,3500,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',32,0,1000,N'2026-08-19T00:00:00'),
|
||
(3533,3500,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',33,0,1000,N'2026-08-19T00:00:00'),
|
||
(3534,3500,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',34,0,1000,N'2026-08-19T00:00:00'),
|
||
(3535,3500,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',35,0,1000,N'2026-08-19T00:00:00'),
|
||
(3536,3500,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',36,0,1000,N'2026-08-19T00:00:00'),
|
||
(3537,3500,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',37,0,1000,N'2026-08-19T00:00:00'),
|
||
(3538,3500,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',38,0,1000,N'2026-08-19T00:00:00'),
|
||
(3539,3500,N'T',N'T_SPACE_VIOLATION',N'空间违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',39,0,1000,N'2026-08-19T00:00:00'),
|
||
(3540,3500,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,40,0,1000,N'2026-08-19T00:00:00'),
|
||
(3541,3500,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,41,0,1000,N'2026-08-19T00:00:00'),
|
||
(3542,3500,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,42,0,1000,N'2026-08-19T00:00:00'),
|
||
(3543,3500,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,43,0,1000,N'2026-08-19T00:00:00'),
|
||
(3544,3500,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,44,0,1000,N'2026-08-19T00:00:00'),
|
||
(3545,3500,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,45,0,1000,N'2026-08-19T00:00:00'),
|
||
(3546,3500,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,46,0,1000,N'2026-08-19T00:00:00'),
|
||
(3547,3500,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,47,0,1000,N'2026-08-19T00:00:00'),
|
||
(3548,3500,N'DT',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3549,3500,N'DT',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3550,3500,N'DT',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3551,3500,N'DT',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3552,3500,N'DT',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3553,3500,N'DT',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3554,3500,N'DT',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3555,3500,N'DT',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3556,3500,N'DT',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3557,3500,N'DT',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3558,3500,N'DT',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3601,3600,N'DJ',N'DIFF_LEVEL_0',N'0 级(间歇)',1,NULL,0,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3602,3600,N'DJ',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3603,3600,N'DJ',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3604,3600,N'DJ',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3605,3600,N'DJ',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3606,3600,N'DJ',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3607,3600,N'DJ',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3608,3600,N'DJ',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',8,0,1000,N'2026-08-19T00:00:00'),
|
||
(3609,3600,N'DJ',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',9,0,1000,N'2026-08-19T00:00:00'),
|
||
(3610,3600,N'DJ',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',10,0,1000,N'2026-08-19T00:00:00'),
|
||
(3611,3600,N'DJ',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3612,3600,N'DJ',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3613,3600,N'DJ',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3614,3600,N'DJ',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',14,0,1000,N'2026-08-19T00:00:00'),
|
||
(3615,3600,N'DJ',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',15,0,1000,N'2026-08-19T00:00:00'),
|
||
(3616,3600,N'DJ',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"avg"}',16,0,1000,N'2026-08-19T00:00:00'),
|
||
(3617,3600,N'DT',N'DIFF_LEVEL_1_MINUS',N'1- 级',1,NULL,1.3554,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',17,0,1000,N'2026-08-19T00:00:00'),
|
||
(3618,3600,N'DT',N'DIFF_LEVEL_1',N'1 级',1,NULL,1.5000,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',18,0,1000,N'2026-08-19T00:00:00'),
|
||
(3619,3600,N'DT',N'DIFF_LEVEL_1_PLUS',N'1+ 级',1,NULL,1.8371,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',19,0,1000,N'2026-08-19T00:00:00'),
|
||
(3620,3600,N'DT',N'DIFF_LEVEL_2_MINUS',N'2- 级',1,NULL,2.0331,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',20,0,1000,N'2026-08-19T00:00:00'),
|
||
(3621,3600,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3622,3600,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3623,3600,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3624,3600,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3625,3600,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3626,3600,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3627,3600,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3628,3600,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3629,3600,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3630,3600,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3631,3600,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3632,3600,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',32,0,1000,N'2026-08-19T00:00:00'),
|
||
(3633,3600,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',33,0,1000,N'2026-08-19T00:00:00'),
|
||
(3634,3600,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1,0,50,1,0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',34,0,1000,N'2026-08-19T00:00:00'),
|
||
(3635,3600,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1,0,24,1,12,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',35,0,1000,N'2026-08-19T00:00:00'),
|
||
(3636,3600,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1,0,50,1,0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',36,0,1000,N'2026-08-19T00:00:00'),
|
||
(3637,3600,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',37,0,1000,N'2026-08-19T00:00:00'),
|
||
(3638,3600,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',38,0,1000,N'2026-08-19T00:00:00'),
|
||
(3639,3600,N'T',N'T_SPACE_VIOLATION',N'空间违例',4,NULL,0.05,0,50,1,0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',39,0,1000,N'2026-08-19T00:00:00'),
|
||
(3640,3600,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,40,0,1000,N'2026-08-19T00:00:00'),
|
||
(3641,3600,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,41,0,1000,N'2026-08-19T00:00:00'),
|
||
(3642,3600,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,42,0,1000,N'2026-08-19T00:00:00'),
|
||
(3643,3600,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,43,0,1000,N'2026-08-19T00:00:00'),
|
||
(3644,3600,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,44,0,1000,N'2026-08-19T00:00:00'),
|
||
(3645,3600,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,45,0,1000,N'2026-08-19T00:00:00'),
|
||
(3646,3600,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,46,0,1000,N'2026-08-19T00:00:00'),
|
||
(3647,3600,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,47,0,1000,N'2026-08-19T00:00:00'),
|
||
(3648,3600,N'DT',N'DIFF_LEVEL_2',N'2 级',1,NULL,2.2500,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3649,3600,N'DT',N'DIFF_LEVEL_2_PLUS',N'2+ 级',1,NULL,2.7557,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3650,3600,N'DT',N'DIFF_LEVEL_3_MINUS',N'3- 级',1,NULL,3.0497,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3651,3600,N'DT',N'DIFF_LEVEL_3',N'3 级',1,NULL,3.3750,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3652,3600,N'DT',N'DIFF_LEVEL_3_PLUS',N'3+ 级',1,NULL,4.1335,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3653,3600,N'DT',N'DIFF_LEVEL_4_MINUS',N'4- 级',1,NULL,4.5745,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3654,3600,N'DT',N'DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3655,3600,N'DT',N'DIFF_LEVEL_4_PLUS',N'4+ 级',1,NULL,6.2003,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3656,3600,N'DT',N'DIFF_LEVEL_5_MINUS',N'5- 级',1,NULL,6.8617,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3657,3600,N'DT',N'DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3658,3600,N'DT',N'DIFF_LEVEL_5_PLUS',N'5+ 级',1,NULL,9.3004,0,50,1,0,0,1,0,N'{"inputMode":"count","unitLabel":"个","difficultyAggregate":"top","difficultyTopCount":20}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3701,3700,N'DGA',N'DP_DM_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',1,0,1000,N'2026-08-19T00:00:00'),
|
||
(3702,3700,N'DGA',N'DP_DM_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',2,0,1000,N'2026-08-19T00:00:00'),
|
||
(3703,3700,N'DGA',N'DP_DM_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',3,0,1000,N'2026-08-19T00:00:00'),
|
||
(3704,3700,N'DGA',N'DP_DM_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',4,0,1000,N'2026-08-19T00:00:00'),
|
||
(3705,3700,N'DGA',N'DP_DM_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',5,0,1000,N'2026-08-19T00:00:00'),
|
||
(3706,3700,N'DGA',N'DP_DM_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',6,0,1000,N'2026-08-19T00:00:00'),
|
||
(3707,3700,N'DGA',N'DP_DM_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',7,0,1000,N'2026-08-19T00:00:00'),
|
||
(3708,3700,N'DGA',N'DP_DM_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',8,0,1000,N'2026-08-19T00:00:00'),
|
||
(3709,3700,N'DGA',N'DP_DM_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',9,0,1000,N'2026-08-19T00:00:00'),
|
||
(3710,3700,N'DGA',N'DP_DM_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DP_DM","subjectName":"DP+DM(个人绳)"}',10,0,1000,N'2026-08-19T00:00:00'),
|
||
(3711,3700,N'DGA',N'DA_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',11,0,1000,N'2026-08-19T00:00:00'),
|
||
(3712,3700,N'DGA',N'DA_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',12,0,1000,N'2026-08-19T00:00:00'),
|
||
(3713,3700,N'DGA',N'DA_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',13,0,1000,N'2026-08-19T00:00:00'),
|
||
(3714,3700,N'DGA',N'DA_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',14,0,1000,N'2026-08-19T00:00:00'),
|
||
(3715,3700,N'DGA',N'DA_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',15,0,1000,N'2026-08-19T00:00:00'),
|
||
(3716,3700,N'DGA',N'DA_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',16,0,1000,N'2026-08-19T00:00:00'),
|
||
(3717,3700,N'DGA',N'DA_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',17,0,1000,N'2026-08-19T00:00:00'),
|
||
(3718,3700,N'DGA',N'DA_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',18,0,1000,N'2026-08-19T00:00:00'),
|
||
(3719,3700,N'DGA',N'DA_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',19,0,1000,N'2026-08-19T00:00:00'),
|
||
(3720,3700,N'DGA',N'DA_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DA","subjectName":"DA(车轮跳)"}',20,0,1000,N'2026-08-19T00:00:00'),
|
||
(3721,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',21,0,1000,N'2026-08-19T00:00:00'),
|
||
(3722,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',22,0,1000,N'2026-08-19T00:00:00'),
|
||
(3723,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',23,0,1000,N'2026-08-19T00:00:00'),
|
||
(3724,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',24,0,1000,N'2026-08-19T00:00:00'),
|
||
(3725,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',25,0,1000,N'2026-08-19T00:00:00'),
|
||
(3726,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',26,0,1000,N'2026-08-19T00:00:00'),
|
||
(3727,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',27,0,1000,N'2026-08-19T00:00:00'),
|
||
(3728,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',28,0,1000,N'2026-08-19T00:00:00'),
|
||
(3729,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',29,0,1000,N'2026-08-19T00:00:00'),
|
||
(3730,3700,N'DGA',N'DT_INTERACTION_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_INTERACTION","subjectName":"DT(交互绳)"}',30,0,1000,N'2026-08-19T00:00:00'),
|
||
(3731,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_0',N'0 级',1,NULL,1.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',31,0,1000,N'2026-08-19T00:00:00'),
|
||
(3732,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,1.2247,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',32,0,1000,N'2026-08-19T00:00:00'),
|
||
(3733,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_1',N'1 级',1,NULL,1.5,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',33,0,1000,N'2026-08-19T00:00:00'),
|
||
(3734,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_2',N'2 级',1,NULL,2.25,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',34,0,1000,N'2026-08-19T00:00:00'),
|
||
(3735,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_3',N'3 级',1,NULL,3.375,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',35,0,1000,N'2026-08-19T00:00:00'),
|
||
(3736,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',36,0,1000,N'2026-08-19T00:00:00'),
|
||
(3737,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',37,0,1000,N'2026-08-19T00:00:00'),
|
||
(3738,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_6',N'6 级',1,NULL,11.3906,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',38,0,1000,N'2026-08-19T00:00:00'),
|
||
(3739,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_7',N'7 级',1,NULL,17.0859,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',39,0,1000,N'2026-08-19T00:00:00'),
|
||
(3740,3700,N'DGA',N'DT_TRAVEL_DIFF_LEVEL_8',N'8 级',1,NULL,25.6289,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DT_TRAVEL","subjectName":"DT(旅行跳)"}',40,0,1000,N'2026-08-19T00:00:00'),
|
||
(3741,3700,N'DGB',N'DR_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',41,0,1000,N'2026-08-19T00:00:00'),
|
||
(3742,3700,N'DGB',N'DR_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',42,0,1000,N'2026-08-19T00:00:00'),
|
||
(3743,3700,N'DGB',N'DR_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',43,0,1000,N'2026-08-19T00:00:00'),
|
||
(3744,3700,N'DGB',N'DR_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',44,0,1000,N'2026-08-19T00:00:00'),
|
||
(3745,3700,N'DGB',N'DR_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',45,0,1000,N'2026-08-19T00:00:00'),
|
||
(3746,3700,N'DGB',N'DR_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',46,0,1000,N'2026-08-19T00:00:00'),
|
||
(3747,3700,N'DGB',N'DR_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',47,0,1000,N'2026-08-19T00:00:00'),
|
||
(3748,3700,N'DGB',N'DR_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',48,0,1000,N'2026-08-19T00:00:00'),
|
||
(3749,3700,N'DGB',N'DR_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',49,0,1000,N'2026-08-19T00:00:00'),
|
||
(3750,3700,N'DGB',N'DR_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DR","subjectName":"DR(个人绳)"}',50,0,1000,N'2026-08-19T00:00:00'),
|
||
(3751,3700,N'DGB',N'DB_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',51,0,1000,N'2026-08-19T00:00:00'),
|
||
(3752,3700,N'DGB',N'DB_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',52,0,1000,N'2026-08-19T00:00:00'),
|
||
(3753,3700,N'DGB',N'DB_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',53,0,1000,N'2026-08-19T00:00:00'),
|
||
(3754,3700,N'DGB',N'DB_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',54,0,1000,N'2026-08-19T00:00:00'),
|
||
(3755,3700,N'DGB',N'DB_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',55,0,1000,N'2026-08-19T00:00:00'),
|
||
(3756,3700,N'DGB',N'DB_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',56,0,1000,N'2026-08-19T00:00:00'),
|
||
(3757,3700,N'DGB',N'DB_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',57,0,1000,N'2026-08-19T00:00:00'),
|
||
(3758,3700,N'DGB',N'DB_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',58,0,1000,N'2026-08-19T00:00:00'),
|
||
(3759,3700,N'DGB',N'DB_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',59,0,1000,N'2026-08-19T00:00:00'),
|
||
(3760,3700,N'DGB',N'DB_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DB","subjectName":"DB(车轮跳)"}',60,0,1000,N'2026-08-19T00:00:00'),
|
||
(3761,3700,N'DGB',N'DJ_DIFF_LEVEL_0',N'0 级',1,NULL,0.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',61,0,1000,N'2026-08-19T00:00:00'),
|
||
(3762,3700,N'DGB',N'DJ_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,0.12,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',62,0,1000,N'2026-08-19T00:00:00'),
|
||
(3763,3700,N'DGB',N'DJ_DIFF_LEVEL_1',N'1 级',1,NULL,0.15,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',63,0,1000,N'2026-08-19T00:00:00'),
|
||
(3764,3700,N'DGB',N'DJ_DIFF_LEVEL_2',N'2 级',1,NULL,0.23,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',64,0,1000,N'2026-08-19T00:00:00'),
|
||
(3765,3700,N'DGB',N'DJ_DIFF_LEVEL_3',N'3 级',1,NULL,0.34,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',65,0,1000,N'2026-08-19T00:00:00'),
|
||
(3766,3700,N'DGB',N'DJ_DIFF_LEVEL_4',N'4 级',1,NULL,0.51,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',66,0,1000,N'2026-08-19T00:00:00'),
|
||
(3767,3700,N'DGB',N'DJ_DIFF_LEVEL_5',N'5 级',1,NULL,0.76,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',67,0,1000,N'2026-08-19T00:00:00'),
|
||
(3768,3700,N'DGB',N'DJ_DIFF_LEVEL_6',N'6 级',1,NULL,1.14,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',68,0,1000,N'2026-08-19T00:00:00'),
|
||
(3769,3700,N'DGB',N'DJ_DIFF_LEVEL_7',N'7 级',1,NULL,1.71,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',69,0,1000,N'2026-08-19T00:00:00'),
|
||
(3770,3700,N'DGB',N'DJ_DIFF_LEVEL_8',N'8 级',1,NULL,2.56,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DJ","subjectName":"DJ(交互绳)"}',70,0,1000,N'2026-08-19T00:00:00'),
|
||
(3771,3700,N'DGB',N'DL_DIFF_LEVEL_0',N'0 级',1,NULL,1.0,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',71,0,1000,N'2026-08-19T00:00:00'),
|
||
(3772,3700,N'DGB',N'DL_DIFF_LEVEL_0_5',N'0.5 级',1,NULL,1.2247,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',72,0,1000,N'2026-08-19T00:00:00'),
|
||
(3773,3700,N'DGB',N'DL_DIFF_LEVEL_1',N'1 级',1,NULL,1.5,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',73,0,1000,N'2026-08-19T00:00:00'),
|
||
(3774,3700,N'DGB',N'DL_DIFF_LEVEL_2',N'2 级',1,NULL,2.25,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',74,0,1000,N'2026-08-19T00:00:00'),
|
||
(3775,3700,N'DGB',N'DL_DIFF_LEVEL_3',N'3 级',1,NULL,3.375,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',75,0,1000,N'2026-08-19T00:00:00'),
|
||
(3776,3700,N'DGB',N'DL_DIFF_LEVEL_4',N'4 级',1,NULL,5.0625,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',76,0,1000,N'2026-08-19T00:00:00'),
|
||
(3777,3700,N'DGB',N'DL_DIFF_LEVEL_5',N'5 级',1,NULL,7.5938,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',77,0,1000,N'2026-08-19T00:00:00'),
|
||
(3778,3700,N'DGB',N'DL_DIFF_LEVEL_6',N'6 级',1,NULL,11.3906,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',78,0,1000,N'2026-08-19T00:00:00'),
|
||
(3779,3700,N'DGB',N'DL_DIFF_LEVEL_7',N'7 级',1,NULL,17.0859,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',79,0,1000,N'2026-08-19T00:00:00'),
|
||
(3780,3700,N'DGB',N'DL_DIFF_LEVEL_8',N'8 级',1,NULL,25.6289,0.0,50.0,1.0,0.0,0,1,0,N'{"inputMode":"count","unitLabel":"个","subjectCode":"DL","subjectName":"DL(长绳)"}',80,0,1000,N'2026-08-19T00:00:00'),
|
||
(3781,3700,N'P',N'MUSIC_PLUS',N'音乐(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":1}',81,0,1000,N'2026-08-19T00:00:00'),
|
||
(3782,3700,N'P',N'MUSIC_MINUS',N'音乐(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"MUSIC","adjustSign":-1}',82,0,1000,N'2026-08-19T00:00:00'),
|
||
(3783,3700,N'P',N'MUSIC_SCORE',N'音乐',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"MUSIC","dimensionWeight":0.20,"baseValue":12.0}',83,0,1000,N'2026-08-19T00:00:00'),
|
||
(3784,3700,N'P',N'QUALITY_PLUS',N'完成质量(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":1}',84,0,1000,N'2026-08-19T00:00:00'),
|
||
(3785,3700,N'P',N'QUALITY_MINUS',N'完成质量(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"QUALITY","adjustSign":-1}',85,0,1000,N'2026-08-19T00:00:00'),
|
||
(3786,3700,N'P',N'QUALITY_SCORE',N'完成质量',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"QUALITY","dimensionWeight":0.25,"baseValue":12.0}',86,0,1000,N'2026-08-19T00:00:00'),
|
||
(3787,3700,N'P',N'ENTERTAINMENT_PLUS',N'娱乐(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":1}',87,0,1000,N'2026-08-19T00:00:00'),
|
||
(3788,3700,N'P',N'ENTERTAINMENT_MINUS',N'娱乐(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"ENTERTAINMENT","adjustSign":-1}',88,0,1000,N'2026-08-19T00:00:00'),
|
||
(3789,3700,N'P',N'ENTERTAINMENT_SCORE',N'娱乐',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"ENTERTAINMENT","dimensionWeight":0.25,"baseValue":12.0}',89,0,1000,N'2026-08-19T00:00:00'),
|
||
(3790,3700,N'P',N'CREATIVITY_PLUS',N'创意(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":1}',90,0,1000,N'2026-08-19T00:00:00'),
|
||
(3791,3700,N'P',N'CREATIVITY_MINUS',N'创意(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"CREATIVITY","adjustSign":-1}',91,0,1000,N'2026-08-19T00:00:00'),
|
||
(3792,3700,N'P',N'CREATIVITY_SCORE',N'创意',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"CREATIVITY","dimensionWeight":0.15,"baseValue":12.0}',92,0,1000,N'2026-08-19T00:00:00'),
|
||
(3793,3700,N'P',N'VARIETY_PLUS',N'多样性(加数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":1}',93,0,1000,N'2026-08-19T00:00:00'),
|
||
(3794,3700,N'P',N'VARIETY_MINUS',N'多样性(减数量)',3,NULL,1.0,0.0,50.0,1.0,0.0,0,2,0,N'{"inputMode":"count","unitLabel":"次","dimensionCode":"VARIETY","adjustSign":-1}',94,0,1000,N'2026-08-19T00:00:00'),
|
||
(3795,3700,N'P',N'VARIETY_SCORE',N'多样性',3,NULL,1.0,0.0,24.0,1.0,12.0,1,2,0,N'{"inputMode":"score","isAuto":true,"dimensionCode":"VARIETY","dimensionWeight":0.15,"baseValue":12.0}',95,0,1000,N'2026-08-19T00:00:00'),
|
||
(3796,3700,N'P',N'FAILURE_COUNT',N'失误次数',3,NULL,1.0,0.0,50.0,1.0,0.0,0,0,0,N'{"inputMode":"count","unitLabel":"次","isFailureCount":true,"remark":"表现裁判记一次失误,其对应的表现五个方面(音乐,完成质量,创意,娱乐和多样性)减数量+1"}',96,0,1000,N'2026-08-19T00:00:00'),
|
||
(3797,3700,N'T',N'T_FAILURE',N'失误',4,NULL,0.05,0.0,50.0,1.0,0.0,0,4,0,N'{"inputMode":"count","unitLabel":"次","stepDeductions":[0.05,0.075,0.1],"remark":"第1次扣0.05,第2次扣0.075,第3次起每次扣0.1"}',97,0,1000,N'2026-08-19T00:00:00'),
|
||
(3798,3700,N'T',N'T_VIOLATION',N'违例',4,NULL,0.05,0.0,50.0,1.0,0.0,0,4,0,N'{"inputMode":"count","unitLabel":"次"}',98,0,1000,N'2026-08-19T00:00:00'),
|
||
(3799,3700,N'T',N'REQ_SINGLE_ROPE',N'个人绳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',99,0,1000,N'2026-08-19T00:00:00'),
|
||
(3800,3700,N'T',N'REQ_WHEEL',N'车轮跳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',100,0,1000,N'2026-08-19T00:00:00'),
|
||
(3801,3700,N'T',N'REQ_WIRE',N'交互绳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',101,0,1000,N'2026-08-19T00:00:00'),
|
||
(3802,3700,N'T',N'REQ_LONG_ROPE',N'长绳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',102,0,1000,N'2026-08-19T00:00:00'),
|
||
(3803,3700,N'T',N'REQ_TRAVEL',N'旅行跳',2,NULL,1.0,0.0,50.0,1.0,0.0,0,3,0,N'{"inputMode":"count","unitLabel":"个","requiredAsCategory":true}',103,0,1000,N'2026-08-19T00:00:00'),
|
||
(3804,3700,N'T',N'REQUIRED_MISSING',N'规定元素缺失(个)',2,NULL,NULL,0.0,5.0,1.0,0.0,1,0,0,N'{"inputMode":"score","isAuto":true,"unitLabel":"个","requiredTarget":5.0}',104,0,1000,N'2026-08-19T00:00:00'),
|
||
(3805,3700,N'T',N'DQ_DISCIPLINE',N'违反赛场纪律',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,105,0,1000,N'2026-08-19T00:00:00'),
|
||
(3806,3700,N'T',N'DQ_MEMBER_COUNT',N'参赛人员不符合规定(不足或超过)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,106,0,1000,N'2026-08-19T00:00:00'),
|
||
(3807,3700,N'T',N'DQ_NO_ROPE_SHOES',N'未穿跳绳鞋',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,107,0,1000,N'2026-08-19T00:00:00'),
|
||
(3808,3700,N'T',N'DQ_EXTERNAL_AID',N'使用外部助力器材',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,108,0,1000,N'2026-08-19T00:00:00'),
|
||
(3809,3700,N'T',N'DQ_UNCIVILIZED',N'比赛中嚼口香糖/不文明用语等',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,109,0,1000,N'2026-08-19T00:00:00'),
|
||
(3810,3700,N'T',N'DQ_ANTI_OLYMPIC',N'有悖奥林匹克精神的元素(描绘暴力、战争、宗教、色情有关的元素)',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,110,0,1000,N'2026-08-19T00:00:00'),
|
||
(3811,3700,N'T',N'DQ_LATE_60S',N'运动员(队)被叫超过60秒未上场',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,111,0,1000,N'2026-08-19T00:00:00'),
|
||
(3812,3700,N'T',N'DQ_TATTOO',N'显露纹身',5,NULL,NULL,NULL,NULL,NULL,NULL,2,0,0,NULL,112,0,1000,N'2026-08-19T00:00:00');
|
||
|
||
|
||
UPDATE i SET ItemName=s.ItemName,ItemType=s.ItemType,ParentItemCode=s.ParentItemCode,UnitValue=s.UnitValue,MinValue=s.MinValue,
|
||
MaxValue=s.MaxValue,StepValue=s.StepValue,DefaultValue=s.DefaultValue,CalcMode=s.CalcMode,ScoreDimension=s.ScoreDimension,
|
||
IsRequired=s.IsRequired,ExtensionJson=s.ExtensionJson,Sort=s.Sort,DeleteMark=s.DeleteMark,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
|
||
FROM dbo.ScoreRuleItem i JOIN #RuleMap m ON m.TargetId=i.ScoreRuleId
|
||
JOIN #ItemSeed s ON s.SourceRuleId=m.SourceId AND s.JudgeRoleType=i.JudgeRoleType AND s.ItemCode=i.ItemCode
|
||
WHERE EXISTS(SELECT i.ItemName,i.ItemType,i.ParentItemCode,i.UnitValue,i.MinValue,i.MaxValue,i.StepValue,i.DefaultValue,i.CalcMode,i.ScoreDimension,i.IsRequired,i.ExtensionJson,i.Sort,i.DeleteMark
|
||
EXCEPT SELECT s.ItemName,s.ItemType,s.ParentItemCode,s.UnitValue,s.MinValue,s.MaxValue,s.StepValue,s.DefaultValue,s.CalcMode,s.ScoreDimension,s.IsRequired,s.ExtensionJson,s.Sort,s.DeleteMark);
|
||
INSERT dbo.ScoreRuleItem(Id,ScoreRuleId,JudgeRoleType,ItemCode,ItemName,ItemType,ParentItemCode,UnitValue,MinValue,MaxValue,StepValue,DefaultValue,CalcMode,ScoreDimension,IsRequired,ExtensionJson,Sort,DeleteMark,CreatedUserId,CreatedTime)
|
||
SELECT s.Id,m.TargetId,s.JudgeRoleType,s.ItemCode,s.ItemName,s.ItemType,s.ParentItemCode,s.UnitValue,s.MinValue,s.MaxValue,s.StepValue,s.DefaultValue,s.CalcMode,s.ScoreDimension,s.IsRequired,s.ExtensionJson,s.Sort,s.DeleteMark,s.CreatedUserId,s.CreatedTime
|
||
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 NOT EXISTS(SELECT 1 FROM dbo.ScoreRuleItem i WHERE i.Id=s.Id);
|
||
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=s.DeleteMark))
|
||
THROW 51004,N'计分规则明细种子ID被占用且业务键不存在,无法安全初始化。',1;
|
||
|
||
-- 若重复执行初始化脚本,先保留历史评分快照并解除规则项引用,再物理删除旧交互绳难度项。
|
||
IF OBJECT_ID(N'dbo.EventJudgeScoreDetail',N'U') IS NOT NULL
|
||
BEGIN
|
||
UPDATE detail
|
||
SET ScoreRuleItemId=NULL,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
|
||
FROM dbo.EventJudgeScoreDetail detail
|
||
JOIN dbo.ScoreRuleItem item ON item.Id=detail.ScoreRuleItemId
|
||
JOIN #RuleMap map ON map.TargetId=item.ScoreRuleId AND map.SourceId IN (3500,3600)
|
||
WHERE item.JudgeRoleType IN (N'DJ',N'DT')
|
||
AND item.ItemType=1
|
||
AND NOT EXISTS(SELECT 1 FROM #ItemSeed seed WHERE seed.SourceRuleId=map.SourceId AND seed.JudgeRoleType=item.JudgeRoleType AND seed.ItemCode=item.ItemCode);
|
||
END;
|
||
DELETE i
|
||
FROM dbo.ScoreRuleItem i
|
||
JOIN #RuleMap m ON m.TargetId=i.ScoreRuleId AND m.SourceId IN (3500,3600)
|
||
WHERE i.JudgeRoleType IN (N'DJ',N'DT')
|
||
AND i.ItemType=1
|
||
AND NOT EXISTS(SELECT 1 FROM #ItemSeed s WHERE s.SourceRuleId=m.SourceId AND s.JudgeRoleType=i.JudgeRoleType AND s.ItemCode=i.ItemCode);
|
||
|
||
/* 4.2.1 交互绳基础项目必须绑定交互绳规则,避免新编排场次继承到无评分项的旧规则。 */
|
||
DECLARE @WireRuleId BIGINT = (SELECT TOP 1 Id FROM dbo.ScoreRule WHERE RuleCode LIKE 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)
|
||
INSERT dbo.SysRole(Id,Name,Code,Status,Sort,Remark,DeleteMark,CreatedUserId,CreatedTime) VALUES(1003,N'打分系统单位',N'scoringunit',0,4,N'打分系统单位账号',0,1000,'2023-06-01');
|
||
ELSE UPDATE dbo.SysRole SET Name=N'打分系统单位',Code=N'scoringunit',Status=0,Sort=4,Remark=N'打分系统单位账号',DeleteMark=0 WHERE Id=1003;
|
||
|
||
/* 4.4 菜单/按钮:独立单位管理、打分系统工作台及模块、2010裁判管理 */
|
||
IF NOT EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1047 AND Code=N'permission:account' AND DeleteMark=0)
|
||
THROW 51006,N'未找到权限管理-账号管理菜单(Id=1047,Code=permission:account)。',1;
|
||
IF EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1080 AND ISNULL(Code,N'')<>N'system:unit')
|
||
THROW 51006,N'SysMenu.Id=1080 已被其他菜单占用。',1;
|
||
/* 保留独立单位管理菜单,账号管理仅维护后台系统账号。 */
|
||
CREATE TABLE #MenuSeed(Id BIGINT PRIMARY KEY,Name NVARCHAR(32),Type INT,Code NVARCHAR(128),ParentId BIGINT,RouteName NVARCHAR(32),Path NVARCHAR(128),Component NVARCHAR(128),Redirect NVARCHAR(128),Icon NVARCHAR(64),IsIframe BIT,Link NVARCHAR(256),IsVisible BIT,IsKeepAlive BIT,IsFixed BIT,Status INT,Sort INT,Remark NVARCHAR(256),DeleteMark BIT,CreatedUserId BIGINT,CreatedTime DATETIME2(3));
|
||
INSERT #MenuSeed VALUES
|
||
(1080,N'单位管理',1,N'system:unit',1070,N'systemunit',N'/system/unit',N'system/unit/index',N'',N'ele-OfficeBuilding',0,N'',1,1,0,0,4,N'单位管理',0,1000,N'2023-06-01'),
|
||
(1081,N'打分账号-新增',2,N'system:unit:add',1080,N'btn_system_unit_add',N'',N'',N'',N'',0,N'',0,1,0,0,1,N'单位管理:账号新增',0,1000,N'2023-06-01'),
|
||
(1082,N'打分账号-编辑',2,N'system:unit:edit',1080,N'btn_system_unit_edit',N'',N'',N'',N'',0,N'',0,1,0,0,2,N'单位管理:账号编辑',0,1000,N'2023-06-01'),
|
||
(1083,N'打分账号-删除',2,N'system:unit:delete',1080,N'btn_system_unit_delete',N'',N'',N'',N'',0,N'',0,1,0,0,3,N'单位管理:账号删除',0,1000,N'2023-06-01'),
|
||
(1084,N'打分账号-启用禁用',2,N'system:unit:status',1080,N'btn_system_unit_status',N'',N'',N'',N'',0,N'',0,1,0,0,4,N'单位管理:账号状态',0,1000,N'2023-06-01'),
|
||
(1085,N'打分账号-重置密码',2,N'system:unit:resetpwd',1080,N'btn_system_unit_resetpwd',N'',N'',N'',N'',0,N'',0,1,0,0,5,N'单位管理:重置密码',0,1000,N'2023-06-01'),
|
||
(1086,N'打分系统工作台',0,N'scoring',NULL,N'scoring',N'/scoring',N'Layout',N'/scoring/launcher',N'ele-Trophy',0,N'',1,1,0,0,190,N'打分系统工作台',0,1000,N'2023-06-01'),
|
||
(1087,N'工作台',1,N'scoring:launcher',1086,N'scoringLauncher',N'/scoring/launcher',N'scoring/launcher/index',N'',N'ele-Monitor',0,N'',1,1,0,0,1,N'选择计分模式和赛事',0,1000,N'2023-06-01'),
|
||
(1088,N'秩序册',1,N'scoring:orderbook',1086,N'scoringOrderBook',N'/scoring/orderbook',N'scoring/orderbook/index',N'',N'ele-Notebook',0,N'',1,1,0,0,2,N'秩序册导入',0,1000,N'2023-06-01'),
|
||
(1089,N'成绩管理',1,N'scoring:workbench',1086,N'scoringWorkbench',N'/scoring/workbench',N'scoring/workbench/index',N'',N'ele-Management',0,N'',1,1,0,0,3,N'成绩管理',0,1000,N'2023-06-01'),
|
||
(1090,N'成绩投屏',1,N'scoring:cast',1086,N'scoringCast',N'/scoring/cast',N'scoring/workbench/index',N'',N'ele-DataLine',0,N'',1,1,0,0,4,N'成绩投屏操作台',0,1000,N'2023-06-01'),
|
||
(2010,N'裁判管理',1,N'referee',NULL,N'referee',N'/referee',N'match/referee/index',N'',N'ele-UserFilled',0,N'',1,1,0,0,245,N'裁判库管理',0,1000,N'2023-06-01');
|
||
IF EXISTS(SELECT 1 FROM #MenuSeed s JOIN dbo.SysMenu m ON m.Id=s.Id WHERE ISNULL(m.Code,N'')<>ISNULL(s.Code,N'')) THROW 51006,N'二期菜单ID已被其他菜单占用。',1;
|
||
UPDATE m SET Name=s.Name,Type=s.Type,Code=s.Code,ParentId=s.ParentId,RouteName=s.RouteName,Path=s.Path,Component=s.Component,Redirect=s.Redirect,Icon=s.Icon,IsIframe=s.IsIframe,Link=s.Link,IsVisible=s.IsVisible,IsKeepAlive=s.IsKeepAlive,IsFixed=s.IsFixed,Status=s.Status,Sort=s.Sort,Remark=s.Remark,DeleteMark=0,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
|
||
FROM dbo.SysMenu m JOIN #MenuSeed s ON s.Id=m.Id
|
||
WHERE EXISTS(SELECT m.Name,m.Type,m.Code,m.ParentId,m.RouteName,m.Path,m.Component,m.Redirect,m.Icon,m.IsIframe,m.Link,m.IsVisible,m.IsKeepAlive,m.IsFixed,m.Status,m.Sort,m.Remark,m.DeleteMark
|
||
EXCEPT SELECT s.Name,s.Type,s.Code,s.ParentId,s.RouteName,s.Path,s.Component,s.Redirect,s.Icon,s.IsIframe,s.Link,s.IsVisible,s.IsKeepAlive,s.IsFixed,s.Status,s.Sort,s.Remark,CONVERT(BIT,0));
|
||
INSERT dbo.SysMenu(Id,Name,Type,Code,ParentId,RouteName,Path,Component,Redirect,Icon,IsIframe,Link,IsVisible,IsKeepAlive,IsFixed,Status,Sort,Remark,DeleteMark,CreatedUserId,CreatedTime)
|
||
SELECT Id,Name,Type,Code,ParentId,RouteName,Path,Component,Redirect,Icon,IsIframe,Link,IsVisible,IsKeepAlive,IsFixed,Status,Sort,Remark,DeleteMark,CreatedUserId,CreatedTime FROM #MenuSeed s WHERE NOT EXISTS(SELECT 1 FROM dbo.SysMenu m WHERE m.Id=s.Id);
|
||
|
||
/* 4.5 角色-菜单授权:按角色和菜单匹配已有关系,缺失关系自动生成新Id */
|
||
DECLARE @RoleMenuSeed TABLE(Id BIGINT NULL,RoleId BIGINT,MenuId BIGINT,SeedOrder INT IDENTITY(1,1),PRIMARY KEY(RoleId,MenuId));
|
||
INSERT @RoleMenuSeed(RoleId,MenuId) VALUES
|
||
(1000,1080),(1000,1081),(1000,1082),(1000,1083),(1000,1084),(1000,1085),(1000,1086),(1000,1087),(1000,1088),(1000,1089),(1000,1090),(1000,2010),
|
||
(1003,1086),(1003,1087),(1003,1088),(1003,1089),(1003,1090),
|
||
(1001,1086),(1001,1089),(1001,1090);
|
||
DECLARE @RoleMenuNextId BIGINT;
|
||
SELECT @RoleMenuNextId=ISNULL(MAX(Id),0) FROM dbo.SysRoleMenu WITH (UPDLOCK,HOLDLOCK);
|
||
UPDATE s SET Id=rm.Id
|
||
FROM @RoleMenuSeed s
|
||
JOIN dbo.SysRoleMenu rm ON rm.RoleId=s.RoleId AND rm.MenuId=s.MenuId;
|
||
UPDATE @RoleMenuSeed SET Id=@RoleMenuNextId+SeedOrder WHERE Id IS NULL;
|
||
INSERT dbo.SysRoleMenu(Id,RoleId,MenuId,CreatedUserId,CreatedTime,DeleteMark)
|
||
SELECT s.Id,s.RoleId,s.MenuId,1000,'2023-06-01',0
|
||
FROM @RoleMenuSeed s
|
||
WHERE NOT EXISTS(SELECT 1 FROM dbo.SysRoleMenu rm WHERE rm.RoleId=s.RoleId AND rm.MenuId=s.MenuId);
|
||
UPDATE rm SET DeleteMark=0,UpdatedUserId=1000,UpdatedTime=SYSUTCDATETIME()
|
||
FROM dbo.SysRoleMenu rm JOIN @RoleMenuSeed s ON s.RoleId=rm.RoleId AND s.MenuId=rm.MenuId;
|
||
|
||
/* ====================================================================================
|
||
[5/9] 可编程对象 · 标量函数 / 视图 / 存储过程(CREATE OR ALTER,可重复执行;用 EXEC 包裹规避批处理分隔)
|
||
1个标量函数 + 3个视图 + 2个存储过程
|
||
==================================================================================== */
|
||
PRINT N'[5/9] 可编程对象:创建函数、视图与存储过程';
|
||
/* 标量函数:成绩状态码 -> 中文名(0计算中/10待复核/20已确认/30已投屏/40已更正/90作废) */
|
||
EXEC(N'CREATE OR ALTER FUNCTION dbo.fn_Phase2_ResultStatusName(@ResultStatus INT)
|
||
RETURNS NVARCHAR(32) AS BEGIN RETURN CASE @ResultStatus WHEN 0 THEN N''计算中'' WHEN 10 THEN N''待复核'' WHEN 20 THEN N''已确认'' WHEN 30 THEN N''已投屏'' WHEN 40 THEN N''已更正'' WHEN 90 THEN N''已作废'' ELSE N''未知'' END END');
|
||
|
||
/* 视图:裁判席位分配明细(关联场次/场地/裁判档案) */
|
||
EXEC(N'CREATE OR ALTER VIEW dbo.vw_Phase2_JudgeAssignment AS
|
||
SELECT a.Id AS AssignmentId,a.EventId,a.SessionId,s.SessionNo,s.SessionName,v.VenueCode,v.VenueName,
|
||
a.EventRefereeId,a.RefereeId,r.Name AS RefereeName,r.Mobile,a.JudgeUserId,a.JudgeRole,a.JudgeRoleType,
|
||
a.AssignmentStatus,a.SubmittedTime,a.Status,a.DeleteMark
|
||
FROM dbo.EventJudgeAssignment a
|
||
JOIN dbo.EventSession s ON s.Id=a.SessionId
|
||
JOIN dbo.EventVenue v ON v.Id=s.VenueId
|
||
JOIN dbo.Referee r ON r.Id=a.RefereeId');
|
||
|
||
/* 视图:场次内每个出场的应收/已收评分单进度 */
|
||
EXEC(N'CREATE OR ALTER VIEW dbo.vw_Phase2_SessionScoreProgress AS
|
||
SELECT e.SessionId,e.Id AS SessionEntryId,e.EntryNo,e.PlayOrder,e.ParticipantName,
|
||
COUNT(DISTINCT CASE WHEN a.DeleteMark=0 AND a.Status=0 THEN a.Id END) AS ExpectedJudgeCount,
|
||
COUNT(DISTINCT CASE WHEN sh.DeleteMark=0 AND sh.IsCurrent=1 AND sh.SheetStatus>=10 THEN sh.JudgeAssignmentId END) AS SubmittedJudgeCount,
|
||
MAX(sh.SubmittedTime) AS LastSubmittedTime
|
||
FROM dbo.EventSessionEntry e
|
||
LEFT JOIN dbo.EventJudgeAssignment a ON a.SessionId=e.SessionId
|
||
LEFT JOIN dbo.EventJudgeScoreSheet sh ON sh.SessionEntryId=e.Id AND sh.JudgeAssignmentId=a.Id
|
||
WHERE e.DeleteMark=0
|
||
GROUP BY e.SessionId,e.Id,e.EntryNo,e.PlayOrder,e.ParticipantName');
|
||
|
||
/* 视图:对外公开成绩(仅已确认/已发布/已投屏且未作废的出场) */
|
||
EXEC(N'CREATE OR ALTER VIEW dbo.vw_Phase2_PublicResult AS
|
||
SELECT r.Id,r.EventId,r.SessionId,r.SessionEntryId,e.EntryNo,e.ParticipantName,e.TeamName,e.GroupName,
|
||
r.DifficultyScore,r.PerformanceScore,r.RequiredScore,r.DeductionScore,r.TotalScore,r.[Rank],
|
||
r.IsDisqualified,r.DisqualifyReasonCode,r.ResultStatus,r.ResultVersion,
|
||
dbo.fn_Phase2_ResultStatusName(r.ResultStatus) AS ResultStatusName
|
||
FROM dbo.EventResult r
|
||
JOIN dbo.EventSessionEntry e ON e.Id=r.SessionEntryId
|
||
WHERE r.DeleteMark=0 AND r.Status=0 AND e.DeleteMark=0 AND e.IsVoided=0 AND r.ResultStatus IN(20,30,40)');
|
||
|
||
/* 存储过程:查询指定场次评分进度(按出场顺序) */
|
||
EXEC(N'CREATE OR ALTER PROCEDURE dbo.usp_Phase2_GetSessionScoreProgress @SessionId BIGINT AS
|
||
BEGIN SET NOCOUNT ON; SELECT * FROM dbo.vw_Phase2_SessionScoreProgress WHERE SessionId=@SessionId ORDER BY PlayOrder; END');
|
||
|
||
/* 存储过程:部署自检(二期表/视图/例程清单 + 各规则明细条数) */
|
||
EXEC(N'CREATE OR ALTER PROCEDURE dbo.usp_Phase2_ValidateDeployment AS
|
||
BEGIN SET NOCOUNT ON;
|
||
SELECT N''Table'' AS ObjectType,t.name AS ObjectName FROM sys.tables t WHERE t.name IN
|
||
(''RefereeApplication'',''CheckinTask'',''CheckinRecord'',''Referee'',''EventReferee'',''EventJudgeAssignment'',''EventJudgeTask'',''EventVenue'',''EventSession'',''EventSessionEntry'',''EventSessionEntryRematch'',''EventJudgeMessage'',''ScoreRule'',''ScoreRuleItem'',''EventJudgeScoreSheet'',''EventJudgeScoreAttachment'',''EventJudgeScoreDetail'',''EventResultVersion'',''EventScoreCorrection'',''EventResultScreenCast'')
|
||
UNION ALL SELECT N''View'',name FROM sys.views WHERE name LIKE ''vw_Phase2[_]%''
|
||
UNION ALL SELECT N''Routine'',name FROM sys.objects WHERE type IN(''P'',''FN'') AND (name LIKE ''usp_Phase2[_]%'' OR name LIKE ''fn_Phase2[_]%'');
|
||
SELECT r.RuleCode,COUNT(i.Id) AS ItemCount FROM dbo.ScoreRule r LEFT JOIN dbo.ScoreRuleItem i ON i.ScoreRuleId=r.Id AND i.DeleteMark=0 WHERE r.RuleCode IN(''ROPE_PRESCRIBED'',''ROPE_FREESTYLE_SINGLE'',''ROPE_FREESTYLE_DOUBLE_SYNC'',''ROPE_FREESTYLE_QUAD_SYNC'',''ROPE_FREESTYLE_WHEEL_PAIR'',''ROPE_FREESTYLE_WIRE_TRIPLE'',''ROPE_FREESTYLE_WIRE_QUAD'',''ROPE_SHOWCASE'') AND r.DeleteMark=0 GROUP BY r.RuleCode; END');
|
||
|
||
/* ====================================================================================
|
||
[6/9] 权限 · 创建三个最小权限数据库角色并授权
|
||
yd_phase2_app_rw 应用读写:业务表 SELECT/INSERT/UPDATE + 视图查询 + 例程执行,关键留痕表禁止 DELETE
|
||
yd_phase2_app_ro 只读:业务表/视图 SELECT;yd_phase2_executor 执行器:仅执行自检/进度存储过程
|
||
==================================================================================== */
|
||
PRINT N'[6/9] 权限:配置最小权限数据库角色';
|
||
/* 6.1 创建三个数据库角色(已存在则跳过) */
|
||
IF DATABASE_PRINCIPAL_ID(N'yd_phase2_app_rw') IS NULL CREATE ROLE [yd_phase2_app_rw] AUTHORIZATION [dbo];
|
||
IF DATABASE_PRINCIPAL_ID(N'yd_phase2_app_ro') IS NULL CREATE ROLE [yd_phase2_app_ro] AUTHORIZATION [dbo];
|
||
IF DATABASE_PRINCIPAL_ID(N'yd_phase2_executor') IS NULL CREATE ROLE [yd_phase2_executor] AUTHORIZATION [dbo];
|
||
|
||
/* 6.2 视图授权:只读角色、读写角色均可 SELECT */
|
||
PRINT N' - grants: views -> read-only';
|
||
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_JudgeAssignment TO [yd_phase2_app_ro];');
|
||
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_SessionScoreProgress TO [yd_phase2_app_ro];');
|
||
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_PublicResult TO [yd_phase2_app_ro];');
|
||
PRINT N' - grants: views -> app-rw';
|
||
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_JudgeAssignment TO [yd_phase2_app_rw];');
|
||
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_SessionScoreProgress TO [yd_phase2_app_rw];');
|
||
EXEC(N'GRANT SELECT ON OBJECT::dbo.vw_Phase2_PublicResult TO [yd_phase2_app_rw];');
|
||
PRINT N' - grants: procedures';
|
||
EXEC(N'GRANT EXECUTE ON OBJECT::dbo.usp_Phase2_GetSessionScoreProgress TO [yd_phase2_app_rw];');
|
||
EXEC(N'GRANT EXECUTE ON OBJECT::dbo.usp_Phase2_GetSessionScoreProgress TO [yd_phase2_executor];');
|
||
EXEC(N'GRANT EXECUTE ON OBJECT::dbo.usp_Phase2_ValidateDeployment TO [yd_phase2_executor];');
|
||
PRINT N' - grants: function';
|
||
EXEC(N'GRANT EXECUTE, REFERENCES ON OBJECT::dbo.fn_Phase2_ResultStatusName TO [yd_phase2_app_rw];');
|
||
EXEC(N'GRANT EXECUTE, REFERENCES ON OBJECT::dbo.fn_Phase2_ResultStatusName TO [yd_phase2_app_ro];');
|
||
|
||
/* 6.3 业务表授权:游标逐表 GRANT(rw=查增改,ro=查) */
|
||
DECLARE @BusinessTable SYSNAME,@PermissionSql NVARCHAR(MAX);
|
||
DECLARE business_tables CURSOR LOCAL FAST_FORWARD FOR SELECT [Name] FROM (VALUES
|
||
(N'RefereeApplication'),(N'CheckinTask'),(N'CheckinRecord'),(N'Referee'),(N'EventReferee'),(N'EventJudgeAssignment'),
|
||
(N'EventJudgeTask'),(N'EventVenue'),(N'EventSession'),(N'EventSessionEntry'),(N'EventSessionEntryRematch'),
|
||
(N'EventJudgeMessage'),(N'ScoreRule'),(N'ScoreRuleItem'),(N'EventJudgeScoreSheet'),(N'EventJudgeScoreAttachment'),(N'EventJudgeScoreDetail'),
|
||
(N'EventResultVersion'),(N'EventScoreCorrection'),(N'EventResultScreenCast'))x([Name]);
|
||
OPEN business_tables; FETCH NEXT FROM business_tables INTO @BusinessTable;
|
||
WHILE @@FETCH_STATUS=0
|
||
BEGIN
|
||
SET @PermissionSql=N'GRANT SELECT,INSERT,UPDATE ON OBJECT::dbo.'+QUOTENAME(@BusinessTable)+N' TO [yd_phase2_app_rw]; GRANT SELECT ON OBJECT::dbo.'+QUOTENAME(@BusinessTable)+N' TO [yd_phase2_app_ro];';
|
||
EXEC sys.sp_executesql @PermissionSql;
|
||
FETCH NEXT FROM business_tables INTO @BusinessTable;
|
||
END
|
||
CLOSE business_tables; DEALLOCATE business_tables;
|
||
/* 6.4 关键留痕表对读写角色 DENY DELETE,只允许软删除(DeleteMark) */
|
||
DENY DELETE ON OBJECT::dbo.EventJudgeScoreSheet TO [yd_phase2_app_rw];
|
||
DENY DELETE ON OBJECT::dbo.EventJudgeScoreDetail TO [yd_phase2_app_rw];
|
||
DENY DELETE ON OBJECT::dbo.EventResultVersion TO [yd_phase2_app_rw];
|
||
DENY DELETE ON OBJECT::dbo.EventScoreCorrection TO [yd_phase2_app_rw];
|
||
|
||
PRINT N'[7/9] 执行后置校验';
|
||
DECLARE @Validation TABLE([Category] NVARCHAR(32),[Item] NVARCHAR(128),[Passed] BIT,[Actual] NVARCHAR(1000));
|
||
DECLARE @ExpectedTables TABLE(Name SYSNAME);
|
||
INSERT @ExpectedTables VALUES(N'RefereeApplication'),(N'CheckinTask'),(N'CheckinRecord'),(N'Referee'),(N'EventReferee'),(N'EventJudgeAssignment'),(N'EventJudgeTask'),(N'EventVenue'),(N'EventSession'),(N'EventSessionEntry'),(N'EventSessionEntryRematch'),(N'EventJudgeMessage'),(N'ScoreRule'),(N'ScoreRuleItem'),(N'EventJudgeScoreSheet'),(N'EventJudgeScoreAttachment'),(N'EventJudgeScoreDetail'),(N'EventResultVersion'),(N'EventScoreCorrection'),(N'EventResultScreenCast');
|
||
INSERT @Validation SELECT N'TABLE',Name,CASE WHEN OBJECT_ID(N'dbo.'+QUOTENAME(Name),'U') IS NOT NULL THEN 1 ELSE 0 END,N'dbo.'+Name FROM @ExpectedTables;
|
||
|
||
DECLARE @ExpectedColumns TABLE(TableName SYSNAME,ColumnName SYSNAME);
|
||
INSERT @ExpectedColumns VALUES
|
||
(N'AppUser',N'MiniProgramRole'),(N'AppUser',N'AuditUserId'),(N'AppUser',N'AuditTime'),
|
||
(N'Referee',N'AuditUserId'),(N'Referee',N'AuditTime'),
|
||
(N'MerchantCertification',N'AuditUserId'),(N'MerchantCertification',N'AuditTime'),
|
||
(N'Merchant',N'AuditUserId'),(N'Merchant',N'AuditTime'),
|
||
(N'CertificateTemplate',N'UpdatedUserId'),(N'CertificateTemplate',N'UpdatedTime'),
|
||
(N'CertificatePlaceholder',N'CreatedUserId'),(N'CertificatePlaceholder',N'CreatedTime'),(N'CertificatePlaceholder',N'UpdatedUserId'),(N'CertificatePlaceholder',N'UpdatedTime'),
|
||
(N'EventInfo',N'RefereeRegistrationCode'),(N'EventRegistrationLimit',N'RefereeLimit'),
|
||
(N'EventRegistrationItem',N'TeamId'),(N'EventRegistrationItem',N'TeamName'),(N'EventRegistrationItem',N'TeamIndex'),
|
||
(N'Project',N'ScoreRuleId'),(N'SysUser',N'UnitName'),(N'SysUser',N'UnitPlatform'),
|
||
(N'EventResult',N'SessionId'),(N'EventResult',N'SessionEntryId'),(N'EventResult',N'TotalScore'),(N'EventResult',N'ResultVersion'),(N'EventResult',N'ReviewUserId'),(N'EventResult',N'ReviewTime'),
|
||
(N'EventReferee',N'RefereeApplicationId'),(N'EventVenue',N'VenueCode'),(N'EventJudgeMessage',N'ReceiverUserId'),
|
||
(N'EventJudgeScoreDetail',N'ScoreRuleItemId'),(N'EventResultVersion',N'EventResultId'),(N'EventScoreCorrection',N'OriginalScoreSheetId');
|
||
INSERT @Validation SELECT N'COLUMN',TableName+N'.'+ColumnName,CASE WHEN COL_LENGTH(N'dbo.'+TableName,ColumnName) IS NOT NULL THEN 1 ELSE 0 END,N'dbo.'+TableName+N'.'+ColumnName FROM @ExpectedColumns;
|
||
|
||
INSERT @Validation VALUES
|
||
(N'OBJECT',N'二期视图',CASE WHEN (SELECT COUNT(*) FROM sys.views WHERE name LIKE 'vw_Phase2[_]%')=3 THEN 1 ELSE 0 END,CONVERT(NVARCHAR(20),(SELECT COUNT(*) FROM sys.views WHERE name LIKE 'vw_Phase2[_]%'))),
|
||
(N'OBJECT',N'二期存储过程',CASE WHEN (SELECT COUNT(*) FROM sys.procedures WHERE name LIKE 'usp_Phase2[_]%')=2 THEN 1 ELSE 0 END,CONVERT(NVARCHAR(20),(SELECT COUNT(*) FROM sys.procedures WHERE name LIKE 'usp_Phase2[_]%'))),
|
||
(N'OBJECT',N'二期函数',CASE WHEN OBJECT_ID('dbo.fn_Phase2_ResultStatusName','FN') IS NOT NULL THEN 1 ELSE 0 END,N'fn_Phase2_ResultStatusName'),
|
||
(N'INDEX',N'二期索引',CASE WHEN (SELECT COUNT(*) FROM sys.indexes WHERE name IN(N'UX_Referee_Mobile_Active',N'UX_EventReferee_Event_Referee_Active',N'UX_EventVenue_Event_Code_Active',N'UX_EventSession_Event_No_Active',N'UX_EventJudgeScoreSheet_Idempotency',N'UX_EventResultVersion_Result_Version'))=6 THEN 1 ELSE 0 END,N'6个关键索引'),
|
||
(N'CONSTRAINT',N'二期外键',CASE WHEN (SELECT COUNT(*) FROM sys.foreign_keys WHERE name LIKE 'FK[_]%' AND parent_object_id IN(SELECT OBJECT_ID(N'dbo.'+QUOTENAME(Name)) FROM @ExpectedTables))>=20 THEN 1 ELSE 0 END,CONVERT(NVARCHAR(20),(SELECT COUNT(*) FROM sys.foreign_keys WHERE name LIKE 'FK[_]%' AND parent_object_id IN(SELECT OBJECT_ID(N'dbo.'+QUOTENAME(Name)) FROM @ExpectedTables)))),
|
||
(N'SEED',N'计分规则',CASE WHEN (SELECT COUNT(DISTINCT r.RuleCode) FROM dbo.ScoreRule r JOIN #RuleSeed s ON s.RuleCode=r.RuleCode WHERE r.DeleteMark=0)=8 THEN 1 ELSE 0 END,N'期望8条'),
|
||
(N'SEED',N'计分规则明细',CASE WHEN (SELECT COUNT(*) FROM #ItemSeed s JOIN #RuleMap m ON m.SourceId=s.SourceRuleId JOIN dbo.ScoreRuleItem i ON i.ScoreRuleId=m.TargetId AND i.JudgeRoleType=s.JudgeRoleType AND i.ItemCode=s.ItemCode AND i.DeleteMark=0 WHERE s.DeleteMark=0)=(SELECT COUNT(*) FROM #ItemSeed WHERE DeleteMark=0) THEN 1 ELSE 0 END,CONCAT(N'期望',(SELECT COUNT(*) FROM #ItemSeed WHERE DeleteMark=0),N'条启用评分项')),
|
||
(N'SEED',N'角色与菜单',CASE WHEN EXISTS(SELECT 1 FROM dbo.SysRole WHERE Id=1003 AND Code='scoringunit' AND DeleteMark=0)
|
||
AND (SELECT COUNT(*) FROM dbo.SysMenu WHERE Id IN(1080,1081,1082,1083,1084,1085,1086,1087,1088,1089,1090,2010) AND DeleteMark=0)=12
|
||
AND EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1080 AND Code='system:unit' AND ParentId=1070 AND DeleteMark=0)
|
||
AND (SELECT COUNT(*) FROM dbo.SysMenu WHERE Id IN(1081,1082,1083,1084,1085) AND ParentId=1080 AND DeleteMark=0)=5
|
||
AND EXISTS(SELECT 1 FROM dbo.SysMenu WHERE Id=1086 AND Code='scoring' AND DeleteMark=0)
|
||
AND (SELECT COUNT(*) FROM dbo.SysMenu WHERE Id IN(1087,1088,1089,1090) AND ParentId=1086 AND DeleteMark=0)=4
|
||
AND (SELECT COUNT(*) FROM dbo.SysRoleMenu WHERE RoleId=1000 AND MenuId IN(1080,1086,1087,1088,1089,1090) AND DeleteMark=0)=6
|
||
AND (SELECT COUNT(*) FROM dbo.SysRoleMenu WHERE RoleId=1003 AND MenuId IN(1086,1087,1088,1089,1090) AND DeleteMark=0)=5
|
||
AND (SELECT COUNT(*) FROM dbo.SysRoleMenu WHERE RoleId=1001 AND MenuId IN(1086,1089,1090) AND DeleteMark=0)=3
|
||
THEN 1 ELSE 0 END,N'单位管理、工作台及三个业务模块、三类角色菜单授权'),
|
||
(N'PERMISSION',N'最小权限角色',CASE WHEN (SELECT COUNT(*) FROM sys.database_principals WHERE name IN('yd_phase2_app_rw','yd_phase2_app_ro','yd_phase2_executor') AND type='R')=3 THEN 1 ELSE 0 END,N'期望3个数据库角色');
|
||
|
||
SELECT N'POSTCHECK' AS [Stage],[Category],[Item],CASE WHEN Passed=1 THEN N'PASS' ELSE N'FAIL' END AS [Result],[Actual] FROM @Validation ORDER BY Passed,[Category],[Item];
|
||
IF EXISTS(SELECT 1 FROM @Validation WHERE Passed=0)
|
||
BEGIN
|
||
DECLARE @FailedValidation NVARCHAR(2048);
|
||
SELECT TOP 1 @FailedValidation=N'二期部署后置校验失败:'+[Category]+N' / '+[Item]+N',实际值:'+ISNULL([Actual],N'') FROM @Validation WHERE Passed=0 ORDER BY [Category],[Item];
|
||
THROW 51008,@FailedValidation,1;
|
||
END;
|
||
|
||
PRINT N'[8/9] 生成部署摘要';
|
||
SELECT DB_NAME() AS DatabaseName,CONVERT(NVARCHAR(128),SERVERPROPERTY('ProductVersion')) AS SqlServerVersion,
|
||
(SELECT COUNT(*) FROM @ExpectedTables) AS Phase2TableCount,
|
||
(SELECT COUNT(*) FROM sys.indexes i JOIN sys.tables t ON t.object_id=i.object_id WHERE t.name IN(SELECT Name FROM @ExpectedTables) AND i.name IS NOT NULL) AS Phase2IndexCount,
|
||
(SELECT COUNT(*) FROM sys.foreign_keys f WHERE f.parent_object_id IN(SELECT OBJECT_ID(N'dbo.'+QUOTENAME(Name)) FROM @ExpectedTables)) AS Phase2ForeignKeyCount,
|
||
(SELECT COUNT(*) FROM #RuleSeed) AS RuleSeedCount,(SELECT COUNT(*) FROM #ItemSeed) AS RuleItemSeedCount;
|
||
|
||
PRINT N'[9/9] 提交事务';
|
||
COMMIT TRANSACTION;
|
||
PRINT N'二期数据库部署成功,事务已提交。';
|
||
END TRY
|
||
BEGIN CATCH
|
||
DECLARE @ErrorNumber INT=ERROR_NUMBER(),@ErrorLine INT=ERROR_LINE(),@ErrorMessage NVARCHAR(4000)=ERROR_MESSAGE();
|
||
IF XACT_STATE()<>0 ROLLBACK TRANSACTION;
|
||
SELECT N'FAILED' AS [Stage],@ErrorNumber AS ErrorNumber,@ErrorLine AS ErrorLine,@ErrorMessage AS ErrorMessage,N'所有未提交变更已回滚' AS RollbackStatus;
|
||
THROW;
|
||
END CATCH;
|