新增成绩查询、裁判认证及检录员账号管理接口,并统一小程序角色登录与个人中心数据。 检录任务绑定赛事秩序册场次,按项目、组别、场地和场次顺序执行;支持最多三名检录员、分配检录轮次及前序检录校验。 补充检录任务、检录记录、裁判申请实体及四份数据库迁移,包含表字段备注、秩序册绑定和检录序号。
32 lines
1.9 KiB
Transact-SQL
32 lines
1.9 KiB
Transact-SQL
/* 检录员一检、二检、三检任务分配。SQL Server,可重复执行。 */
|
||
SET NOCOUNT ON;
|
||
IF OBJECT_ID(N'dbo.CheckinTask', N'U') IS NULL
|
||
THROW 50001, N'缺少 dbo.CheckinTask,请先执行前置迁移', 1;
|
||
|
||
IF COL_LENGTH(N'dbo.CheckinTask', N'CheckinNo') IS NULL
|
||
ALTER TABLE dbo.CheckinTask ADD CheckinNo INT NOT NULL
|
||
CONSTRAINT DF_CheckinTask_CheckinNo DEFAULT (1);
|
||
GO
|
||
|
||
IF EXISTS(SELECT EventId FROM dbo.CheckinTask WHERE DeleteMark=0 AND TaskStatus=1 GROUP BY EventId HAVING COUNT(*)>3)
|
||
THROW 50002, N'存在赛事拥有超过三个有效检录员,请先解除多余检录员', 1;
|
||
|
||
;WITH RankedTask AS
|
||
(
|
||
SELECT Id, ROW_NUMBER() OVER(PARTITION BY EventId ORDER BY CreatedTime,Id) AS NewCheckinNo
|
||
FROM dbo.CheckinTask WHERE DeleteMark=0 AND TaskStatus=1
|
||
)
|
||
UPDATE task SET CheckinNo=ranked.NewCheckinNo
|
||
FROM dbo.CheckinTask task INNER JOIN RankedTask ranked ON ranked.Id=task.Id;
|
||
|
||
IF NOT EXISTS(SELECT 1 FROM sys.indexes WHERE object_id=OBJECT_ID(N'dbo.CheckinTask') AND name=N'UX_CheckinTask_Event_CheckinNo_Active')
|
||
CREATE UNIQUE INDEX UX_CheckinTask_Event_CheckinNo_Active
|
||
ON dbo.CheckinTask(EventId,CheckinNo) WHERE DeleteMark=0 AND TaskStatus=1;
|
||
GO
|
||
|
||
DECLARE @Description NVARCHAR(4000)=N'该检录员负责的检次:1-一检,2-二检,3-三检';
|
||
IF EXISTS(SELECT 1 FROM sys.extended_properties WHERE class=1 AND major_id=OBJECT_ID(N'dbo.CheckinTask') AND minor_id=COLUMNPROPERTY(OBJECT_ID(N'dbo.CheckinTask'),N'CheckinNo','ColumnId') AND name=N'MS_Description')
|
||
EXEC sys.sp_updateextendedproperty @name=N'MS_Description',@value=@Description,@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'CheckinTask',@level2type=N'COLUMN',@level2name=N'CheckinNo';
|
||
ELSE
|
||
EXEC sys.sp_addextendedproperty @name=N'MS_Description',@value=@Description,@level0type=N'SCHEMA',@level0name=N'dbo',@level1type=N'TABLE',@level1name=N'CheckinTask',@level2type=N'COLUMN',@level2name=N'CheckinNo';
|