用友NC系统考勤机自动同步方案

实现效果:

1.在NC中对人员进行操作后,如新增、离职、部门调动后,对应部门的考勤机自动同步。

2.NC可自动导入机器考勤记录到系统中。

 

解决方案:

1.在NC数据库中新增一个中间表ZJB,作用是用于临时保存通过考勤档案表中查询出变动人员信息。

2.中控考勤机或科密考勤机系统能定时将zjb数据导出,并下发到考勤机中(导入后清空表zjb,避免重复导入数据)。

3.每天考勤机系统能将考勤数据导出到指定目录下(文件名称可用当天日期),我们要做的是首先在NC“考勤规则”中设置存放考勤记录的文件夹保存路径,然后我们在NC的任务中心——后台任务管理,新建任务“考勤机数据采集定时执行导入”。

 

我用的数据库时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  /


 

posted on   学中医的程序员  阅读(2559)  评论(0编辑  收藏  举报

编辑推荐:
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· Ollama——大语言模型本地部署的极速利器
· DeepSeek如何颠覆传统软件测试?测试工程师会被淘汰吗?
· 使用C#创建一个MCP客户端

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示