
一、系统结构
客户端:客户端设备为低端的B210和高端的C240(容量不同);
服务器端:Windows Server & MySql ;
过程描述:客户在本地考勤后,数据实时同步到服务器数据库;管理人员通过服务器Web服务进行数据查询,生成报表。
二、需求和分析
后台允许补录考勤数据,但会生成补录的操作记录,以此能辨别出补录行为;而且补录考勤数据只能逐条进行,操作比较麻烦。因此决定从数据库入手,直接写入考勤数据到数据库。
三、数据库分析
- stat_card:储存人员日常考勤信息,数据来源为从客户端硬件考勤设备获取。其中
ng_user_id为人员唯一编码,系统自动生成;
ng_branch_id为人员所在机构编码,系统自动生成;
ng_dev_id为考勤设备编号,系统自动生成;
sz_branch_name为部门名称,人工录入;
sz_user_name为人员姓名,人工录入;
sz_employ_id为员工号,人工录入;
sz_dev_name为考勤设备名称,人工录入;
sz_dev_place为考勤地点,人工录入(报表中会根据此项显示人员是否存在异地考勤现象)。 - stat_day_item_XXXXXX:根据stat_card数据生成考勤明细表。其中(X代表六位日期,例如202009)
nt_period为班次时长(分),系统自动生成;
ng_shift_id为考勤班次编号,系统自动生成;
ng_regular_id为考勤规则编号,系统自动生成;
ng_period_id为班次时长编号,系统自动生成;
sz_shift_name为考勤班次名称,人工录入;
sz_regular_name为考勤规则名称,系统自动生成; - stat_day_exception_XXXXXX:储存考勤异常信息,包括异地考勤、迟到早退、旷工等。
- stat_item_exception_XXXXXX:储存考勤异常信息,包括异地考勤、迟到早退、旷工等。
三、解决思路
- 获取人员基本信息
- 删除人员原考勤数据
- 插入新考勤数据
- 删除人员异常信息
数据库库表按月生成,所以以月为单位进行插入数据;基础信息在EXCEL中更新,查询命令在EXCEL中自动生成,自动跳过周末,简化到只需要执行生成好的命令即可。
四、解决方案
关键点都是以简便操作为核心,基于EXCEL自动生成查询命令。
获取日期:
- 年:=YEAR(NOW());
- 月:=IF(LEN(MONTH(NOW()))=1,”0″&MONTH(NOW()),MONTH(NOW()))
此处命令是为了保留两位数月份 - 日期对应星期:=WEEKDAY(B1,2)