實現效果: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 /