用友NC系統考勤機自動同步方案

實現效果:html

1.在NC中對人員進行操做後,如新增、離職、部門調動後,對應部門的考勤機自動同步。數據庫

2.NC可自動導入機器考勤記錄到系統中。oracle

 

解決方案:app

1.在NC數據庫中新增一箇中間表ZJB,做用是用於臨時保存經過考勤檔案表中查詢出變更人員信息。spa

2.中控考勤機或科密考勤機系統能定時將zjb數據導出,並下發到考勤機中(導入後清空表zjb,避免重複導入數據)。code

3.天天考勤機系統能將考勤數據導出到指定目錄下(文件名稱可用當天日期),咱們要作的是首先在NC「考勤規則」中設置存放考勤記錄的文件夾保存路徑,而後咱們在NC的任務中心——後臺任務管理,新建任務「考勤機數據採集定時執行導入」。htm

 

我用的數據庫時oracle,相關操做語句同步

//1.建立中間表zjb,包含列考勤卡號、姓名、部門號、部門名稱、人員類型
create table zjb
(
 timecardid number(15) ,
 psnname varchar2(10),
 deptcode number(15),
 deptname varchar2(50),
 jobtype number(4)
 
)

//2.建立存儲過程,目的是將變更人員信息插入到中間表中.(其中jobtype爲2的約定爲離職,0約定爲在職)
CREATE OR REPLACE PROCEDURE zjb_proc  IS
BEGIN
delete from zjb;
INSERT INTO zjb(timecardid,psnname,deptcode,deptname,jobtype) 
select  tbm_psndoc.timecardid,psnname,deptcode,deptname ,(case 
when  to_date(enddate,'yyyy-mm-dd')=trunc(sysdate, 'DD') then '2' 
when  to_date(enddate,'yyyy-mm-dd')=to_date('9999-01-01', 'yyyy-mm-dd') then '0' end) as  jobtype  from tbm_psndoc 
left join bd_psndoc on tbm_psndoc.pk_psndoc=bd_psndoc.pk_psndoc 
left join bd_deptdoc on bd_psndoc.pk_deptdoc=bd_deptdoc.pk_deptdoc
where  (to_date(tbm_psndoc.ts,'yyyy-mm-dd hh24:mi:ss')>=trunc(sysdate, 'DD') or to_date(bd_psndoc.ts,'yyyy-mm-dd hh24:mi:ss')>=trunc(sysdate, 'DD')) and  tbm_psndoc.tbm_prop='2' and  tbm_psndoc.timecardid!=' '  ;
  COMMIT;
EXCEPTION
  WHEN OTHERS THEN
    DBMS_OUTPUT.PUT_LINE('Exception happened,data was rollback');
    ROLLBACK;
END;


//3.建立jobs,每間隔一段時間就往zjb中插入數據。這樣能將發生變更人員的信息及時同步到考勤機中。(下面設置爲2分鐘執行一次存儲過程)
SQL> var job_num number;
SQL> begin
  2  dbms_job.submit(:job_num,'zjb_proc;',sysdate,'sysdate+2/24/60');
  3  end;
  4  /
相關文章
相關標籤/搜索