Files
QTImport/docs/sp/usp_GetWeeklyWorkSheetsByProjectId.sql
chenshoulin 58850314cf 初始提交:QuickTeam 工单接口导入工具
用「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 个单测通过。
2026-11-05 19:14:25 +08:00

39 lines
1.2 KiB
Transact-SQL

-- =============================================
-- Author: <Author,,Name>
-- Create date: <Create Date,,>
-- Description: <Description,,>
-- =============================================
CREATE PROCEDURE [QuickTeam].[usp_GetWeeklyWorkSheetsByProjectId]
@ProjectId nvarchar(50),
@Monday nvarchar(50),
@Sunday nvarchar(50)
AS
BEGIN
DECLARE @dt datetime,@qstartday datetime,@qendday datetime
SET @dt=convert(datetime,@Monday)
--2.指定日期所在季度的第一天或最后一天
SELECT @qstartday=DATEADD(qq, DATEDIFF(qq, 0, @dt), 0) ,
@qendday=DATEADD(Day,-1,
CONVERT(char(8),
DATEADD(Month,
1+DATEPART(Quarter,@dt)*3-Month(@dt),
@dt),
120)+'1')
select
ws.[WorkSheetId]
,ws.WorkSheetCode
,ws.[ProjectId]
,ws.[ProjectName]
,ws.[StartTime]
,ws.[EndTime]
,ws.Finished
,ws.[Status]
from [QuickTeam].[QuickTeam].[WorkSheet] ws
where projectid=@ProjectId AND DeleteFlag<>1 and isReclaimed=0
and ((StartTime between @qstartday and @qendday) or (EndTime between @qstartday and @qendday))
order by Finished ,WorkSheetId
END