用「WCF + 通用存储过程网关」接口替代 Selenium(D://Learning//Python//工单自动化)导入工单: 单 Sprint 12 个项目 175s 跑完(旧方案 25~35 分钟),失败可断点续跑且不重复建单。 - 分层:transport(HTTP/协议)/ api(存储过程语义)/ domain(纯规则)/ workflow(阶段编排)/ store(SQLite 台账)/ report / CLI - 幂等:台账驱动断点续跑;dry-run 与跳过行不污染进度;--rollback-on-fail 清理半成品 - 命令:plan / apply / report / status,真实写入需 --yes - tools:只读探针、存储过程源码导出(sp_helptext)、导入诊断 - docs:调研与设计文档(含联调踩到的 5 个坑)+ 6 个关键存储过程源码 实测:Sprint 2026 Sprint 10 的 12 个项目全部完成建单→导入→确认→推送 TFS, 工单 225134–225145,35 个功能模块,重跑 plan 全部 skip-pushed。69 个单测通过。
52 lines
2.3 KiB
Transact-SQL
52 lines
2.3 KiB
Transact-SQL
CREATE PROCEDURE [QuickTeam].[usp_VerifyWorkSheetById]
|
|
|
|
@WorkSheetId bigint
|
|
|
|
,@VersionId int
|
|
|
|
,@NextVersionCode nvarchar(50)
|
|
|
|
,@NextOperator nvarchar(50)
|
|
|
|
,@Percent int
|
|
|
|
,@Operator nvarchar(50)
|
|
|
|
AS
|
|
|
|
BEGIN
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
declare @ParentEffortStatus nvarchar(10),@PreEffortStatus nvarchar(5)='Y',@NextVersionId int,@Count int,@CurrentVersionId int
|
|
|
|
select @ParentEffortStatus=replace(str(status+1,2,0),' ','0') from [QuickTeam].[WorkSheet] where WorkSheetId=@WorkSheetId
|
|
|
|
select @Count= count(*) from [QuickTeam].[WorkSheetVersion] where NextOperator='CustomerLeader' and WorkSheetId=@WorkSheetId
|
|
|
|
if(@Count=2)
|
|
|
|
begin
|
|
|
|
--update [QuickTeam].[WorkSheet] set Status=@ParentEffortStatus where WorkSheetId=@WorkSheetId
|
|
|
|
update [QuickTeam].[WorkSheetVersion] set VersionStatus=@PreEffortStatus,Operator=@Operator,UpdateTime=getdate() where WorkSheetId=@WorkSheetId and VersionId=@VersionId
|
|
|
|
select @CurrentVersionId=max(VersionId) from [QuickTeam].[WorkSheetVersion] where WorkSheetId=@WorkSheetId and VersionStatus='Y'
|
|
|
|
update [QuickTeam].[WorkSheet] set Status=@ParentEffortStatus,CurrentVersionId=@CurrentVersionId ,UpdateTime=GETDATE(),Operation=N'Verify',OperateUserName=@Operator where WorkSheetId=@WorkSheetId
|
|
|
|
end
|
|
|
|
else
|
|
|
|
begin
|
|
|
|
--插入下一版本
|
|
|
|
insert into [QuickTeam].[WorkSheetVersion]([VersionCode]
|
|
|
|
,[VersionStatus]
|
|
|
|
,[NextOperator]
|
|
|
|
,[WorkSheetId]
|
|
|
|
,Operator
|
|
|
|
,UpdateTime
|
|
|
|
)
|
|
|
|
select @NextVersionCode,'N',@NextOperator,@WorkSheetId,'',GETDATE()
|
|
|
|
---更新当前版本
|
|
|
|
update [QuickTeam].[WorkSheetVersion] set VersionStatus=@PreEffortStatus ,Operator=@Operator,UpdateTime=getdate() where WorkSheetId=@WorkSheetId and VersionId=@VersionId
|
|
|
|
|
|
|
|
set @NextVersionId=scope_identity()
|
|
|
|
insert into QuickTeam.WorkSheetTask([FeatureId]
|
|
|
|
,[VersionId]
|
|
|
|
,[TaskCode]
|
|
|
|
,[Effort])
|
|
|
|
select [FeatureId]
|
|
|
|
,@NextVersionId
|
|
|
|
,[TaskCode]
|
|
|
|
,Effort from QuickTeam.WorkSheetTask where VersionId=@VersionId
|
|
|
|
select @CurrentVersionId=max(VersionId) from [QuickTeam].[WorkSheetVersion] where WorkSheetId=@WorkSheetId and VersionStatus='Y'
|
|
|
|
update [QuickTeam].[WorkSheet] set Status=@ParentEffortStatus,CurrentVersionId=@CurrentVersionId ,UpdateTime=GETDATE() where WorkSheetId=@WorkSheetId
|
|
|
|
end
|
|
|
|
|
|
|
|
select @@ERROR As Result
|
|
|
|
END
|
|
|