# xiaoyu-statistics **Repository Path**: other-project/xiaoyu-statistics ## Basic Information - **Project Name**: xiaoyu-statistics - **Description**: No description available - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 0 - **Forks**: 0 - **Created**: 2020-01-19 - **Last Updated**: 2020-12-19 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # 小雨同学的表格数据统计 ## 安装教程 * 访问[node](https://nodejs.org/zh-cn/download/)官网,并下载`Windows`安装包 * 运行`npm-install.bat`,如果运行成功,会多一个`node_modules`的文件见 ## 使用教程 * 把打卡机导出`Excel`放入到`origin`目录 * 执行`npm-start.bat`,如果执行成功,`dist`目录下会多出对应的文件 * 当处理多个文件时,会生成相对应的统计文件 * `origin`目录下,可以放置多个原数据文件 ## 工作历配置规则 * 日历配置文件存放在`calendar`目录下,名称随意,但是最好有意义 * 默认周一至周五是工作日,周六日为休息日 * 需要特殊处理的,写入`Excel` * `calendar`目录下可以存放多个配置文件 ## 基础业务逻辑 * 上午上班时间: 8:30~12:00 * 下午上班时间: 13:00~17:00 * 最早打卡时间: 第一次打卡会被写入最早打卡时间和最晚打卡时间 * 最早打卡时间: 第一次记录第一次打卡时间,第一次以后的打卡时间,会被更新到最晚打卡时间(如果打卡时间>上次记录的最晚时间) * 工作日和休息日定义 * 优先获取工作日历中的日期定义 * 如果没有在工作日历中获取到定义,那么按照周一至周五为工作日,周六日为休息日 * 迟到定义: 最早打卡时间 > 上班时间 && 最早打卡时间 < 12:00 * 早退定义: 最晚打卡时间 < 下班时间 && 最晚打卡时间 > 12:00 * 休息日加班 * 矫正最晚打卡时间和最早打卡时间 * `if`余数分钟 > 35,那么小时向前+1 * `if`余数分钟大于5,小时向前加0.5 * 如果打卡时间横跨午休,需要减去午休时长 * 工作日加班 * 最晚打卡时间 - 下班时间 * 差值大于1小时开始算加班 * 1小时后,加班最小单位为0.5个小时,且有5分钟偏移量 * 请假定义 * 工作日情况下: 没有打卡记录 * 工作日情况下: 最早打卡记录 > 12:00, 表示上午没到,记录请假 3.5个小时 * 工作日情况下: 最晚打卡记录 < 13:00, 表示下午没到,记录请假 4个小时 * 若最早打卡时间 = 最晚打卡时间,记录异常 ## 如需要更改配置文件 * 配置文件为`config.js` * `workTime_am`,上午上班时间 * `workTime_pm`,下午上班时间 * `workEndTime_am`,上午下班时间 * `workEndTime_pm`,下午下班时间 * `dataOptions`为数组,渲染单个用户的数据 * 可以调整顺序,更改名称(注意,不可以修改`code`) * 如果需要增加一空行,需要在数组后加入新的一组数据,其`code=empty`