背景和需求分析:
旺季员工加班的时间暂存在OA系统里,到了淡季的时候员工可以拿出来休掉
时间库系统正是为了解决这个而提出设计的。
需求包括:
1:小组上报员工入库出库时间(小时/月)
2:人事审核时间库
3:时间库报表,可按月导出
4:清空时间库:设计时人事要求一定时间50Jt0qoDuT/nj4FA43Onea2OXAeoY8tH4tOI1B7lrGnx0IvmXf9ikA!/b/YeM*MJxtHgAAYhfIMZxu后(一般为一年)时间库以加班方式发放到工资,同时时间库里所以还有正时间库的员工进行清零处理。
综上功能系统设计使用1个数据表解决:表结构设计
需求分析清楚后,功能实现上没有什么难度,
注意:
1、每员工最后一条记录的TimesAll即为员工总时间剩余
所以在添加月时间库记录时,一定要使用,
前一条记录的TimesAll+当前条记录的TimesTotal得到最新的TimesAll保存下来
2、清空时间库代码:
DECLARE _cursor CURSOR FOR
SELECT id FROM record WHERE leave_office='在职'
DECLARE @id INT
OPEN _cursor
FETCH NEXT FROM _cursor INTO @id
WHILE @@FETCH_STATUS = 0
BEGIN
DECLARE @SQL NVARCHAR(2000)
DECLARE @timeall DECIMAL(18,2)
DECLARE @ForId INT
SELECT TOP 1 @timeall=timesall FROM timesrecord WHERE idrecord=@id ORDER BY tayear DESC,tamonth DESC
IF @timeall>0
BEGIN
SET @ForId = 0
SELECT @ForId = IDLOG FROM timesrecord WHERE idrecord=@id AND tayear=2012 AND tamonth=2
IF @ForId=0 OR @ForId IS NULL
BEGIN
INSERT INTO timesrecord (IDRecord,TimesOut,TimesTotal,TaYear,TaMonth,TimesAll) VALUES( @id ,@timeall,-@timeall,2012,2,0)
END
ELSE
BEGIN
UPDATE timesrecord SET TimesOut=TimesOut+@timeall,TimesTotal=TimesTotal-@timeall,TimesAll=0 WHERE IDLOG=@ForId
END
END
FETCH NEXT FROM _cursor INTO @id
END
CLOSE _cursor
DEALLOCATE _cursor
欢迎指教