公司的老考勤机坏了,换成中控的S30考勤机了,考勤数据需要合并在一起,特写此存储过程,加入到每天的作业中让其自动执行。考勤统计仍然使用C6的,所以将考勤数据同步到C6的考勤里面。

------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------

create procedure    You_pro_Name
---- PengPeng at 2014
----考勤同步数据操作>>>> C6到考勤数据人员信息同步,主要就是讲C6系统表 RS_Emp的人员信息 同步到中控 USERINFO 表里面
--传入参数
AS
----变量
declare @card_no varchar(10) --ID卡号-10位
declare @isUpdate_BuMen bit --是否更新部门控制变量
declare @isUpdate_deleteUSERInfo bit ---删除离职的人员
declare @isUpdate_USERInfo bit --是否更新部门控制变量
declare @isUpdate_CardNo bit --更新员工卡号
declare @isUpdate_KQ_Result bit --是否同步考勤记录
----设置 默认值
set @card_no='0000000001'
set @isUpdate_BuMen=0 ---默认关闭部门更新
set @isUpdate_USERInfo=1 --更新员工 ,必须 默认打开
set @isUpdate_deleteUSERInfo=1 --默认开启
set @isUpdate_CardNo=1 ---更新员工卡号
set @isUpdate_KQ_Result=1 ---是否同步考勤记录 开启-------///同步人员信息\\\--------
----第一 更新部门信息【此步可以不需要,这里只是起显示作用,只要人员信息能对上就可以了,部门可以再C6系统里面找】----第二 更新员工信息【这里是必须的,将员工的编号信息要导入进来,这里员工信息有,有两个表,将USERINFO表里的离职员工放到USERINFO_OLD里面,将C6的新员工添加进来】---- 2.1,将离职的员工移到USERINFO_OLD表里面,然后删除USerINFO里的员工数据,好跟考勤机同步,
if @isUpdate_deleteUSERInfo<>0  ---是否更新控制begininsert into USERINFO_OLD select * from USERINFO  where SSN is not null and ltrim(rtrim(SSN)) not in (select ltrim(rtrim(EmpNo)) from CenterSix2012.dbo.RS_Emp)    ---移动delete USERINFO where SSN is not null and  USERID  in (select USERID from USERINFO_OLD) --删除已经离职的员工    end
else ----如果不删除旧员工也要将卡号清除beginupdate USERINFO set CardNo=NUll where  ltrim(SSN) not in (select ltrim(EmpNo) from CenterSix2012.dbo.RS_Emp)            ----將離職員工卡號清空end
----go---- 2.2,更新新进的员工
if @isUpdate_USERInfo<>0  --控制开关
begin
insert into USERINFO
(
BADGENUMBER  ,     --考勤号码
SSN   ,                 --身份证/证件号
NAME   ,                --姓名
GENDER   ,               --性别
PAGER   ,               --移动电话/传呼机
BIRTHDAY  ,                --生日
HIREDDAY  ,                --参加工作日期
STREET   ,              --家庭地址
VERIFICATIONMETHOD   ,      --验证方式
DEFAULTDEPTID   , --所属部门ID号
ATT  ,        --考勤有效
INLATE  ,     --计迟到
OUTEARLY  ,   --计早退
OVERTIME  ,   --计加班
SEP  ,        --
HOLIDAY  ,    --假日休息
MINZU   ,                --民族
LUNCHDURATION --有午休
)
select
replace(ltrim(EmpNo),'QX',''),---考勤号码
ltrim(EmpNo) AS EMPNO, --编号
EmpName,-- 姓名
case when EmpSexID=1 then 'M' else 'F' end,--性别 M男F女
EmpMobile,--移动电话
EmpBirthday,--生日
EmpGrpDate,--入职日期
EmpHomeAddr,--家庭地址
1,--验证方式
1,--部门ID
1,--考勤有效
0,
0,
1,
1,
1,
EmpNation,--民族
1 --午休
from CenterSix2012.dbo.RS_EMp
where ltrim(EmpNo)  not in (select ltrim(SSN) from USERINFO where SSN is not NULL ) and EMPNO not in ('QX0001','QX0002','QX0007') ---这3个编号不加进去
order by EMPNO
end
----go---- 2.3,更新员工所在部门和职位等无关紧要的信息,不是必须的beginupdate USERINFO  set DEFAULTDEPTID=1 where DEFAULTDEPTID is NULL ----没有部门归到总公司end----第三 更新员工ID卡号码 【这里是全部更新,因为有补卡的情况和卡片改变的情况,每次全部更新比较简单】
if @isUpdate_CardNo<>0
begin
update USERINFO set CardNo=(
select replace('0000000001',RIGHT('0000000001',len(CenterSix2012.dbo.TX_EmpCard.CardFixNo)),CenterSix2012.dbo.TX_EmpCard.CardFixNo)
from CenterSix2012.dbo.RS_EMp,CenterSix2012.dbo.TX_EmpCard
where CenterSix2012.dbo.RS_EMp.EmpSYSID=CenterSix2012.dbo.TX_EmpCard.EmpSYSID
and CenterSix2012.dbo.TX_EmpCard.GUID=(
select top 1 AA.GUID from CenterSix2012.dbo.TX_EmpCard AA where CenterSix2012.dbo.RS_EMp.EmpSySID=AA.EmpSySID and  AA.CardStatusID=20 order by AA.EmpSySID,AA.CardNewDay desc
) and ltrim(CenterSix2012.dbo.RS_EMp.EmpNo)=USERINFO.SSN
)
end
----go
----第四 删除设备上的离职员工。不会再打卡的员工[现在还是 需要在考勤机软件上操作]
select top 1 * from USERINFO where 1=2
----第五 上传人员信息 [现在还是 需要在考勤机软件上操作,尽量选在无人打开的时候进行,此时考勤机是打不了卡的,显示正在传输]
----go
------/考勤人员信息同步完成\\\\\------
------/下面是考勤记录同步\\\\\------
if @isUpdate_KQ_Result<>0
begin  -----
---第A。下载考勤数据,这个考勤软件自动定时更新,也可随时人工更新【在考勤软件上下载考勤记录就可,可重复操纵,因为每次只下载新的记录】
---第B。将中控考勤数据更新到C6系统---B-1,中控考勤记录表中没有人的编号,先更新编号,【可带来方便】beginupdate CHECKINOUT set Memoinfo=(select SSN from USERINFO where  USERINFO.USERID=CHECKINOUT.USERID) where Memoinfo is nullif exists(select top 1 1 from CHECKINOUT where Memoinfo is null)  ---如果在人员表里面没有找到,在旧的人员数据里找编号beginupdate CHECKINOUT set Memoinfo=(select SSN from USERINFO_OLD where  USERINFO_OLD.USERID=CHECKINOUT.USERID) where Memoinfo is nullendend----  go---B-2,将考勤数据导入C6 就是讲CHECKINOUT里的记录打卡数据插入到C6里的 KQ_KqData 表和 Mj_MjData 表里面 Mj_MjData表示打卡原始记录表,------ KQ_KqData是根据Mj_MjData里的数据转来的,C6考勤系统依据它来分析考勤---*--B-2-1 :先将没有导入的数据进行标记 先标记为1 表示那些数据要导入,在导入门禁表Mj_MjData后标记为2,再导入考勤表KQ_KqData ,最后标记为3表示完成。----***----将要导入的记录进行标记 先标记为1update checkinout set UserExtFmt=1 where Memoinfo is not NULL and  UserExtFmt=0 ---一开始是0 变成1 进行标记begin----***----将第一标记的数据导入Mj_MjData-----------insert into CenterSix2012.dbo.MJ_MjData(EmpSysID,DevID,CardID,CardDate,CardDay,DoorID,DoorName)select(select top 1 av.EmpSysID from CenterSix2012.dbo.TX_EmpCard av where ltrim(av.CardDispNo)=CHECKINOUT.Memoinfo order by av.CardNewDay desc),10004,----设备编号设置为10004 便于区分(select top 1 ax.CardID from CenterSix2012.dbo.TX_EmpCard ax where 1=1 and ltrim(ax.CardDispNo)=CHECKINOUT.Memoinfo  order by ax.CardNewDay DESC),dateadd(day,0,CONVERT(varchar(100), CHECKTIME, 23)) ,CHECKTIME,1,'门区1'from CHECKINOUT where Memoinfo is not NULL and  UserExtFmt=1----***----将要导入的记录进行第二次标记 标记为2表示第一步导入完成update checkinout set UserExtFmt=2 where Memoinfo is not NULL and  UserExtFmt=1 ---一开始是1 变成2 进行标记end---- gobegin----***----导入数据到C6的考勤表insert into CenterSix2012.dbo.KQ_KqData(EmpSysID,KqDate,KqTime,IsKeyin,IsKouKuan,IsModified,DevID,KeyinDay,CardID,SynchFlagID)select(select top 1 av.EmpSysID from CenterSix2012.dbo.TX_EmpCard av where ltrim(av.CardDispNo)=CHECKINOUT.Memoinfo order by av.CardNewDay desc),dateadd(day,0,CONVERT(varchar(100), CHECKTIME, 23)) as TTT ,DATEDIFF (ss,dateadd(day,0,CONVERT(varchar(100), CHECKTIME, 23)),CHECKTIME), --考勤时间'N','N','N',10004,---设备号10004区分CHECKTIME,(select top 1 ax.CardID from CenterSix2012.dbo.TX_EmpCard ax where 1=1 and ltrim(ax.CardDispNo)=CHECKINOUT.Memoinfo  order by ax.CardNewDay DESC),0from CHECKINOUT where Memoinfo is not NULL and  UserExtFmt=2----***----将要导入的记录进行第三次标记 标记为3表示导入完成  update checkinout set UserExtFmt=3 where Memoinfo is not NULL and  UserExtFmt=2 ---一开始是2 变成3 进行标记  end
end ---考勤记录同步结束go

------------------------------------------------------------------------------------分割线--------------------------------------------------------------------------------------------

---------
吐槽:我也不想这样做,只是一刷卡考勤机2k多是不是太坑爹了点啊

中控考勤与海威达C6考勤系统考勤数据同步相关推荐

  1. 系统重构数据同步利器之Canal实战篇

    一.背景 二话不说,先上图 上图来自于官网(https://github.com/alibaba/canal),基本上涵盖了目前生产环境使用场景了,众所周知,Canal做数据同步已经是行业内标杆了.我 ...

  2. 企业系统之间数据同步处理

    引用内容: 数据同步一般是指一个数据源的数据发生改变时,其他相关的数据源的数据也发生相应变化.数据同步可以有五种实现方案,根据具体需求不同,可以采取不同方案. 1. 触发器:在源数据库建立增.删.改触 ...

  3. 从青铜到王者的路线,java不同系统间数据同步

    深耕技术,啃下22个技术点 互联网行业更新换代非常快,行业常态便是不断学习,因此这些主流技术你一个都不能落下! ①并发编程 Java并发编程是整个Java开发体系中最难以理解,但也是最重要的知识点之一 ...

  4. 不同系统之间数据的交互

    最近公司的项目要实现几个子系统的数据同步,讨论了几种方式,现记录如下.背景介绍: 子系统                      职责 MarketResearch       实时更新基金产品价格 ...

  5. scada与MySQL连接_SCADA系统与实时数据库数据同步

    关键词:SCADA,实时数据库,同步工具 摘要:本文介绍了力控SCADA平台软件eForceCon如何与实时数据库通讯,将大量的实时数据库写入到实时数据库中,集中管理数据,方便数据检索与分析. 1 概 ...

  6. 基于纷享销客开放平台,实现纷享CRM与金蝶云星空系统数据同步

    阅读对象: CRM/ERP系统管理员.数据库管理员.系统实施.财务.数据分析等相关人员,希望实现两个系统之间数据同步的程序员. 适用场景: 纷享销客创建完客户以后,希望客户信息直接同步到金蝶系统客户列 ...

  7. mysql考勤系统设计函数_Mysql实战之员工考勤系统数据库建立

    一.项目背景 随着企业的规模不断扩大,企业人事管理的日趋复杂和企业人员的增多,迫切需要开发基于网络的员工考勤管理系统来提高管理工作的效率. 二.研究目的 以中小型企业的考勤管理业务为依托,结合科学管理 ...

  8. java计算机毕业设计考勤系统设计源码+mysql数据库+系统+lw文档+部署

    java计算机毕业设计考勤系统设计源码+mysql数据库+系统+lw文档+部署 java计算机毕业设计考勤系统设计源码+mysql数据库+系统+lw文档+部署 本源码技术栈: 项目架构:B/S架构 开 ...

  9. 03 OA系统 (考勤模块)

    第四天: 考勤管理 任务 每个人登录OA之后, 要有考勤管理一级菜单     点开之后有个人考勤 我的排班表 考勤统计3个二级菜单 个人考勤 显示当天的打卡记录 每条记录 最右边有打卡按钮 业务流程: ...

最新文章

  1. 报名 | 数据新闻发展趋势与人才培养学术讲座(武汉)
  2. 浅谈XXE漏洞攻击与防御——本质上就是注入,盗取数据用
  3. 反思项目最新周数的反复反复修改
  4. Swing中的并发-使用SwingWorker线程模式
  5. MyBatis学习笔记(四) 注解
  6. antdesign 柱状图_以Ant Design为例:看B端设计的基本套路
  7. linux 统计端口链接,linux netstat 统计链接数查看外部(转)
  8. 图像采样、量化、编码(二十七)
  9. 为macbook pro安装内存条
  10. IDEA设置默认浏览器为chrome
  11. 题目0121-机器人走迷宫
  12. gcc -lm 是什么意思?
  13. 2022年,有哪些小本生意可以做
  14. CouchDB(1):apache CouchDB介绍与安装
  15. 迷你WiFi摄像机需要多少兆的带宽才不会卡顿
  16. 人物角色建模 镰刀链男人物模型制作过程分享教程
  17. 紧跟百度爱采购:搜狗上线b2b商城“搜狗招商”
  18. C#重载和重写的区别
  19. 重构之美-走在Web标准化设计的路上[复杂表单:Reloaded]
  20. 低配本用win10服务器系统,杜宇低配置的电脑到底是安装win10系统好还是选择win7操作系统更好一点呢...

热门文章

  1. 澳洲网:中国综艺节目走进西澳 促当地旅游发展
  2. linux安装Ftp
  3. Android studio 项目手动在本地磁盘中删除module后,残留文件夹无法删除问题(强迫症患者最大的难受╮(╯﹏╰)╭)
  4. freedns mysql_freedns.afraid.org免费多子域名支持dns解析
  5. 荣誉系统排名是整个服务器,CF穿越火线荣誉排行榜系统正式开启
  6. 卸载idea2020不干净_强制卸载软件程序、清理注册表的好工具
  7. 普华linux证书怎么样,来自一位普华二本学姐的亲述:“四大”真的看重证书么?...
  8. 计算机语言栏转换,Win8语言栏恢复及转换成WinXP/7语言栏形式的方法
  9. EasyTouch 学习之——ETCJoystick 虚拟摇杆
  10. 短信接入DSMP的业务分类说明(转)