1. 表:人事檔案?Hrgeneral
CREATE TABLE [dbo].[Hrgeneral]( [hrcode] [varchar](50) NOT NULL, --員工工號 [hrname] [varchar](16) NULL, --員工姓名 [oldName] [varchar](50) NULL, --曾用名 [CardNo] [varchar](50) NULL, --考慮對應的IC卡號碼 [ID] [varchar](22) NULL, --身份證號碼 [birthday] [datetime] NULL, --出生日期 [Age] AS (round(datediff(month,[birthday],getdate()),0) / 12), --根據出生日期取年齡 [gender] [varchar](8) NULL, --性別 1為男 2為女 [folk] [varchar](16) NULL, --民族ID 引用表 [folkname] [varchar](50) NULL, --民族名稱 引用表 [nativeplace] [varchar](40) NULL, --籍貫ID 引用表 [nativeplacename] [varchar](50) NULL, --籍貫ID 引用表 [politicalview] [varchar](8) NULL, --政治面貌,引用表 [politicalviewname] [varchar](50) NULL, --政治面貌,引用表 [marriage] [varchar](8) NULL, --婚姻情況 引用表 [health] [varchar](500) NULL, --身體情況 引用表 [bodylength] [money] NULL, --身高 [bodyweight] [money] NULL, --體重 [mobile] [varchar](20) NULL, --手機號碼 [email] [varchar](100) NULL, --電子郵箱 [homeaddress] [varchar](100) NULL, --家庭地址 [homephone] [varchar](20) NULL, --家庭電話 [curaddress] [varchar](100) NULL, --暫住地址 [telephone] [varchar](20) NULL, [tekTitle] [varchar](16) NULL, [tekTitlename] [varchar](50) NULL, [education] [varchar](20) NULL, --學歷 [educationcode] [varchar](50) NULL, [school] [varchar](255) NULL, [special] [varchar](50) NULL, [secondspecial] [varchar](50) NULL, [computer] [varchar](16) NULL, [languagetype] [varchar](16) NULL, [languagelevel] [varchar](16) NULL, [otherspecial] [varchar](50) NULL, [companyid] [dbo].[orgcode] NULL, --公司代碼 引用表 [companyname] [varchar](50) NULL, --公司名稱 引用表 [cccode] [dbo].[orgcode] NULL, --部門ID 引用表 [ccname] [varchar](50) NULL, --部門名稱 引用表 [positionid] [varchar](20) NULL, --崗位定級 引用表 [positionname] [varchar](50) NULL, --崗位定級 引用表 [jobtime] [datetime] NULL, --入職時間 [TrialTime] [int] NULL, [workyears] [int] NULL, [joinfundtime] [datetime] NULL, [jobstate] AS (case when (isnull([Leavedate],convert(datetime,'1900-01-01',120)) < '1902-01-01') then '在職' else '離職' end), --工作狀態 [jobtype] [varchar](20) NULL, [leavedate] [datetime] NULL, [leavetype] [varchar](20) NULL, [LeaveName] [varchar](50) NULL, [MedicareCode] [varchar](50) NULL, [MedicareLevel] [int] NULL, [positionlevel] [varchar](20) NULL, [positionlevelname] [varchar](50) NULL, [positionsubsidy] [money] NULL, [employeeType] [varchar](50) NULL, [EmployeetypeName] [varchar](50) NULL, [hrtypecode] [varchar](50) NULL, --薪資類型 引用表 [hrtypename] [varchar](50) NULL, --薪資類型 引用表 [PhotoDir] [varchar](30) NULL, [enterdate] [datetime] NULL, --修改時間 [isvoucher] [varchar](20) NULL, [memo] [varchar](200) NULL, [cv1] [varchar](50) NULL, [cv1name] [varchar](50) NULL, [cv2] [varchar](50) NULL, [cv2name] [varchar](50) NULL, [cv3] [varchar](50) NULL, [cv3name] [varchar](50) NULL, [CompMark] [varchar](50) NULL, [CompMarkName] [varchar](200) NULL, [AgentMan] [varchar](50) NULL, [ActiveAgent] [int] NULL, [Notesid] [varchar](50) NULL, [birthmonth] AS (substring(convert(varchar(10),[birthday],121),6,2)), [AuditusrYN] [int] NULL, [deduction] [varchar](50) NULL, [deductionName] [varchar](50) NULL, [entercode] [varchar](50) NULL, [TrainDebitDate] [datetime] NULL, [ReplFlgDelYN] [int] NULL, [shorthrcode] [varchar](50) NULL, [password] [varchar](15) NULL, [password2] [varchar](50) NULL, [crewcode] [varchar](30) NULL, [crewname] [varchar](30) NULL) --設置主鍵 ALTER TABLE Hrgeneral ADD CONSTRAINT PK_Hrgeneral primary key(hrcode) --設置約束 ALTER TABLE [dbo].[Hrgeneral] ADD CONSTRAINT [DF_hrgeneral_bodylength] DEFAULT (0) FOR [bodylength] ALTER TABLE [dbo].[Hrgeneral] ADD CONSTRAINT [DF_hrgeneral_bodyweight] DEFAULT (0) FOR [bodyweight] ALTER TABLE [dbo].[Hrgeneral] ADD CONSTRAINT [DF_hrgeneral_positionsubsidy] DEFAULT (0) FOR [positionsubsidy] --創建非聚集索引 CREATE NONCLUSTERED INDEX [IX_Hrgeneral] ON [dbo].[Hrgeneral] ( [CardNo] ASC, [hrcode] ASC )
2. 功能:新員工入職
2.1 表:入職表 ?
CREATE TABLE [dbo].[hrOfferCome_h]( [DocCode] [varchar](20) NOT NULL, --單號 自動生成 [FormID] [int] NULL, --表類型ID 引用 [DocDate] [datetime] NULL, --單據日期 [DocType] [varchar](20) NULL, --單據類型 引用formid [refcode] [varchar](50) NULL, --關聯單據 [DocStatus] [int] NULL, --單據狀態 0-未保存 50-保存 100-確定 [periodid] [varchar](20) NULL, -- [EnterName] [varchar](100) NULL, [EnterDate] [datetime] NULL, [ModifyName] [varchar](100) NULL, [ModifyDate] [datetime] NULL, [PostName] [varchar](100) NULL, [PostDate] [datetime] NULL, [hrcode] [varchar](50) NULL, --工號 自動生成 [hrname] [varchar](16) NULL, --姓名 [oldName] [varchar](16) NULL, [birthday] [datetime] NULL, [CardNo] [varchar](50) NULL, [ID] [varchar](22) NULL, [gender] [varchar](8) NULL, [folk] [varchar](16) NULL, [folkname] [varchar](50) NULL, [nativeplace] [varchar](40) NULL, [nativeplacename] [varchar](50) NULL, [politicalview] [varchar](8) NULL, [politicalviewname] [varchar](50) NULL, [marriage] [varchar](8) NULL, [health] [varchar](500) NULL, [jobtime] [datetime] NULL, [TrialTime] [int] NULL, [bodylength] [money] NULL, [bodyweight] [money] NULL, [mobile] [varchar](20) NULL, [homeaddress] [varchar](100) NULL, [homephone] [varchar](20) NULL, [tekTitle] [varchar](16) NULL, [tekTitlename] [varchar](50) NULL, [education] [varchar](20) NULL, [educationcode] [varchar](50) NULL, [school] [varchar](255) NULL, [special] [varchar](50) NULL, [companyid] [dbo].[orgcode] NULL, [companyname] [varchar](50) NULL, [origcompanyid] [dbo].[orgcode] NULL, [cccode] [dbo].[orgcode] NULL, [ccname] [varchar](50) NULL, [positionid] [varchar](20) NULL, [positionname] [varchar](50) NULL, [positionlevel] [varchar](20) NULL, [positionlevelname] [varchar](50) NULL, [positionsubsidy] [money] NULL, [employeeType] [varchar](50) NULL, [EmployeetypeName] [varchar](50) NULL, [hrtypecode] [varchar](50) NULL, [hrtypename] [varchar](50) NULL, [isvoucher] [varchar](20) NULL, [memo] [varchar](200) NULL, [cv1] [varchar](50) NULL, [cv1name] [varchar](50) NULL, [curaddress] [varchar](100) NULL, [blClosed] [int] NULL, [BankNo] [varchar](20) NULL, [BankName] [varchar](60) NULL, [BankAcct] [varchar](30) NULL, [entercode] [varchar](50) NULL, [PhotoDir] [varchar](30) NULL, [ClearDoccode] [varchar](50) NULL, [shorthrcode] [varchar](50) NULL) --主鍵 ALTER TABLE hrOfferCome_h ADD CONSTRAINT PK_hrOfferCome_h PRIMARY KEY(DOCCODE) --約束 ALTER TABLE [dbo].[hrOfferCome_h] ADD CONSTRAINT [DF__hrinput_h__bodyl__54DA7ABA] DEFAULT (0) FOR [bodylength] ALTER TABLE [dbo].[hrOfferCome_h] ADD CONSTRAINT [DF__hrinput_h__bodyw__55CE9EF3] DEFAULT (0) FOR [bodyweight] ALTER TABLE [dbo].[hrOfferCome_h] ADD CONSTRAINT [DF__hrinput_h__posit__56C2C32C] DEFAULT (0) FOR [positionsubsidy]
可以添加一個明細表,用來記錄員工的工作經歷
2.2 存儲過程:p_hrCreateHrcod ? --產生新工號,并更新到表頭
CREATE PROCEDURE [dbo].[p_hrCreateHrcode] ( @doccode VARCHAR(20) ) AS BEGIN DECLARE @newHrcode VARCHAR(10) , @companyid VARCHAR(10), @hrcode Varchar(10) SELECT @companyid = companyid,@hrcode=hrcode FROM hrOfferCome_h WHERE doccode = @doccode /* SELECT @newHrcode = MAX(hrcode) + 1 FROM hrgeneral a JOIN Ms_HrCodeByCompany b ON a.companyid = b.companyid WHERE a.hrcode BETWEEN b.hrbeginno AND b.hrendno AND a.companyid = @companyid */ --已有工號(取消確認的情況)不再產生 IF EXISTS ( SELECT 1 FROM dbo.hrOfferCome_h WHERE ISNULL(hrcode, '') <> '' AND ISNULL(companyid,'')=ISNULL(origcompanyid,'') AND DocCode = @doccode ) and not Exists(select hrcode from hrgeneral where hrcode=@hrcode) RETURN --生成新工號 SELECT @newHrcode = newhrid FROM f_hrNextHrcode(@companyid) IF EXISTS ( SELECT * FROM Ms_HrCodeByCompany WHERE companyid = @companyid AND HrEndNo < @newHrcode ) BEGIN RAISERROR('產生的工號已經超出范圍,請聯系管理員',16,1) --檢查(Ms_HrCodeByCompany) RETURN END ELSE BEGIN UPDATE hrOfferCome_h SET Hrcode = @newHrcode ,shorthrcode=substring(@newHrcode,1,1)+substring(@newHrcode,3,4) WHERE doccode = @doccode UPDATE Ms_HrCodeByCompany SET cuHrcode = @newHrcode WHERE companyid = @companyid END END
2.3 插入到hrgeneral(根據錄入的單據,將數據插入到人事主表hrgeneral之中)
2.4 根據實際情況,根據錄入表單數據,更新數據到:員工生命周期表(日志表),工作經歷表,銀行賬號表,工號跟考勤卡號對應起來??记诳ㄌ柕纳煽梢詤⒖脊ぬ柕纳?。
3. 功能:員工資料修正
可以另外設置一個表,錄入數據之后修改人事主表,或者引用之前表的數據。銀行賬號表之類的,如果數據修改,也需同步更新。
4. 功能:人員崗位調動
4.1:表:hrdochd
CREATE TABLE [dbo].[hrDocHD]( [Doccode] [varchar](50) NOT NULL primary key , [Formid] [int] NULL, [Docdate] [datetime] NULL, [Periodid] [varchar](50) NULL, [ChargesPeriodid] [varchar](50) NULL, [Doctype] [varchar](50) NULL, [Companyid] [varchar](50) NULL, [CompanyName] [varchar](50) NULL, [ccCode] [varchar](50) NULL, [ccName] [varchar](50) NULL, [hrCode] [varchar](50) NULL, [hrName] [varchar](50) NULL, [effbeginday] [datetime] NULL, [effEndday] [datetime] NULL, [Amnt] [money] NULL, [organizor] [varchar](50) NULL, [organizorname] [varchar](50) NULL, [Applyer] [varchar](50) NULL, [ApplyName] [varchar](50) NULL, [applydate] [datetime] NULL, [blclosed] [int] NULL, [blscrap] [int] NULL, [ClearDocCode] [varchar](50) NULL, [Refcode] [varchar](50) NULL, [refformid] [int] NULL, [docstatus] [int] NULL, [Matcode] [varchar](50) NULL, [MatName] [varchar](50) NULL, [Linkdoccode] [varchar](50) NULL, [Linkformid] [varchar](50) NULL, [EnterName] [varchar](50) NULL, [EnterDate] [datetime] NULL, [ModifyName] [varchar](50) NULL, [Modifydate] [datetime] NULL, [PostName] [varchar](50) NULL, [Postdate] [datetime] NULL, [remarks1] [varchar](200) NULL, [remarks2] [varchar](50) NULL, [remarks3] [varchar](50) NULL, [ReplFlgDelYN] [int] NULL)
4.2 插入員工生命周期(日志表),更新人事主表。
5. 轉正登記
人事主表中,有一個參數,是否是正式員工。確認轉正表之后,修改人事主表員工狀態,轉正日期等。插入到日志表。
6. 培訓記錄
插入到日志表中即可
7. 離職辦理
7.1 主表: hrdochd
7.2 明細表: HrDocdetail
CREATE TABLE [dbo].[HrDocdetail]( [Doccode] [varchar](50) NOT NULL, [docitem] [int] NULL, [Rowid] [varchar](10) NOT NULL primary key , [Hrcode] [varchar](50) NULL, [HrName] [varchar](50) NULL, [effBeginday] [datetime] NULL, [effEndday] [datetime] NULL, [Content] [varchar](500) NULL, [Amt] [money] NULL, [ApplyDate] [datetime] NULL, [Confirmdate] [datetime] NULL, [HandleDate] [datetime] NULL, [OrigPosition] [varchar](50) NULL, [OrigPositionname] [varchar](50) NULL, [OrigCccode] [varchar](50) NULL, [OrigCcname] [varchar](50) NULL, [NewPosition] [varchar](50) NULL, [NewPositionname] [varchar](50) NULL, [NewCccode] [varchar](50) NULL, [NewCcname] [varchar](50) NULL, [Matcode] [varchar](50) NULL, [MatName] [varchar](50) NULL, [Memo] [varchar](200) NULL, [refdoccode] [varchar](50) NULL, [refformid] [varchar](50) NULL, [refrowid] [varchar](50) NULL, [Linkdoccode] [varchar](50) NULL, [Linkformid] [varchar](50) NULL)
7.3 更新人事主表信息:離職日期,最新錄入日期等;插入日志表
7.4 存儲過程:p_hrhrDocCreation--更新辭職記錄
CREATE procedure p_hrhrDocCreation @doccode varchar(20), @fag int -- 1,培訓記錄 2,辭職記錄 3,崗位 4,獎勵,5,領用 as set nocount on if @fag not in (1,2,3,4,5) begin raiserror('參數出錯!',16,1); return end if @fag=1 begin if exists( select 1 from Hrpsm_train where doccode =@doccode) begin raiserror('培訓記錄已存在!',16,1); return end insert into Hrpsm_train ( Doccode,Rowid, hrcode ,hrname ,amt , organizor ,matcode,matname, start_date ,end_date ,RegDate , remark ,EnterName ,EnterDate , Formid ) select Doccode ,Rowid ,Hrcode ,HrName ,Amt , Organizor ,matcode,matname, effBeginday ,effEndday , EnterDate, Memo,EnterName ,EnterDate , Formid from vHrDocDetail where doccode=@doccode end if @fag=2 begin select * from Hrpsm_leave where formid='27203' if exists( select 1 from Hrpsm_leave where doccode =@doccode) begin raiserror('辭職記錄已存在!',16,1); return end --sp_help vhrDocDetail insert into Hrpsm_leave ( Doccode,hrcode ,hrname ,cccode,ccname, regdate ,applydate ,leavedate, remark ,EnterName ,EnterDate , Formid ) select Doccode ,Hrcode ,HrName ,cccode,ccname, ApplyDate ,EnterDate , effbeginday, remarks1,EnterName ,EnterDate , Formid from hrDocHD where doccode=@doccode end if @fag=3 begin /* 2720302微更新員工生命周期管理 已插入Hrpsm_relocation modi by liangweijian if exists( select 1 from Hrpsm_relocation where doccode =@doccode) begin raiserror('崗位記錄已存在!',16,1); return end insert into Hrpsm_relocation ( hrcode ,hrname ,rowid , RegDate , orgposition ,orgpositionname ,orgdepartment ,orgdepartmentname , NewPosition ,NewPositionname ,Newdepartment ,Newdepartmentname , remark , EnterDate ,EnterName , Doccode , Formid ) select Hrcode ,HrName ,Rowid , ApplyDate, OrigPosition ,OrigPositionname ,cccode ,ccname , ---OrigCccode ,OrigCcname , NewPosition ,NewPositionname ,NewCccode ,NewCcname , Memo , EnterDate ,EnterName , Doccode , Formid from vHrDocDetail where doccode=@doccode */ IF @@ROWCOUNT > 0 begin --更新當前員工資料表 declare @Hrcode varchar(20), @NewPosition varchar(20), @NewPositionname varchar(200), @NewCccode varchar(20), @NewCcname varchar(200) declare mycur CURSOR FOR select Hrcode , NewPosition ,NewPositionname ,NewCccode ,NewCcname from vHrDocDetail where doccode=@doccode open mycur fetch next from mycur into @Hrcode, @NewPosition,@NewPositionname,@NewCccode,@NewCcname while @@FETCH_STATUS = 0 begin update hrgeneral set positionid=@NewPosition,positionname=@NewPositionname, cccode=@NewCccode,ccname=@NewCcname where hrcode=@hrcode fetch next from mycur into @Hrcode, @NewPosition,@NewPositionname,@NewCccode,@NewCcname end close mycur deallocate mycur end--更新人事資料 end if @fag=4 begin if exists( select 1 from hrpsm_rewardspunish where doccode =@doccode) begin raiserror('獎懲記錄已存在!',16,1); return end insert into hrpsm_rewardspunish ( hrcode ,hrname ,rowid , RegDate , matcode,matname, remark , EnterDate ,EnterName , Doccode , Formid ) select Hrcode ,HrName ,Rowid , ApplyDate, matcode,matname, Memo , EnterDate ,EnterName , Doccode , Formid from vHrDocDetail where doccode=@doccode end if @fag=5 begin if exists( select 1 from Hrpsm_takegoods where doccode =@doccode) begin raiserror('領用記錄已存在!',16,1); return end insert into Hrpsm_takegoods ( hrcode ,hrname ,rowid , RegDate , matcode,matname, remark , EnterDate ,EnterName , Doccode , Formid ) select Hrcode ,HrName ,Rowid , ApplyDate, matcode,matname, Memo , EnterDate ,EnterName , Doccode , Formid from vhrDocDetail where doccode=@doccode end
更多文章、技術交流、商務合作、聯系博主
微信掃碼或搜索:z360901061

微信掃一掃加我為好友
QQ號聯系: 360901061
您的支持是博主寫作最大的動力,如果您喜歡我的文章,感覺我的文章對您有幫助,請用微信掃描下面二維碼支持博主2元、5元、10元、20元等您想捐的金額吧,狠狠點擊下面給點支持吧,站長非常感激您!手機微信長按不能支付解決辦法:請將微信支付二維碼保存到相冊,切換到微信,然后點擊微信右上角掃一掃功能,選擇支付二維碼完成支付。
【本文對您有幫助就好】元
