关于项目中一些时间转换的问你题
这个已经是 第三次提交了
第一次信心满满的谢了一遍 因为有些事情的原因 不得不回家 忘记提交 到家有修改了一下 提交 直接跳转到了登陆页面 让俺后心理阴影面积瞬间澎爆
今天早上起来晚了 走的匆忙 结果忘记带笔记本充电器 关于写东西 投入的时候什么都忘了 写到2/3的时候直接关机了 欲哭无泪呀
第三次写 希望不会再有状况 心情比较糟乱 语言组织的估计不会太好 希望大家见谅 这是我第一次分享项目心得 大家不要在意那些富华的文笔哈 小经验希望能够带爱给写类似模块的小伙伴 愿小伙伴们
少走弯路 下次分享也需要好久 可能要12月之后哈 最近比较忙
这次我们开发的是一个crm的小项目 属于一个简单的教育管理系统 小伙伴们都非常努力 关于别人的模块 我就不讲了 我水平比计较一般 本来说是负责两个模块的 结果因为前台代码 出现了很多bug 最
后只写了一个模块 这是一个简单的日常管理模块 就两个小分支 一个是工资管理 一个是考勤管理 对于工资管理 虽然按也有一些小心得 但没什么技术含量 就不好说了
现在就说说考勤管理吧 在基本的单位官网上 内部员工对于签到这个选项 大家都不会陌生 虽然你现在是指纹打卡 不需要自己打开电脑操作了 原理是一样的 只是具体优化了员工的识别功能
首先 说道打卡吧 这就要说一下 具体分析了 很多单位上下班是统一的 这没什么好说的 也有一些单位根据角色细化了考勤规范 这次我就这么说说吧 这是 一个角色到员工的O2M关系( 1对多)
既然在业务上产生过了关系 对于广泛使用的关系型数据库来说 就意味着可以存在这么一张表 用于这种规范的约束 于是创建了下面这张表 字段命名不太规范 大家权且当做这很规范的样子哈
表中的两个字段 在java中的样式 也见识patten="HH:ss:mm"
关于 考勤 这在很多公司里是一个业绩考核的重要依据 对于月底的 工资也由一定的影响
对于考勤 会对签到做出状态和时间的记录 对于未在外办公的员工珩要有一个补签的功能
这其中就要有 以下几个注意的地方
这条数据的作用时间 也就是考勤日期 对于签到而言是当前时间 对于补签 就是要补签的日期 考勤时相对于一天而言 格式yyyy-MM-dd
对于上下班的签到而言 我们只在乎时分秒的比对 格式为HH:ss:mm
对于补签而言我们在乎的是具体的时间 瞬间 格式为yyyy-MM-dd HH:sss:mm
java 中时间的类型为yyyy-MM-dd HH:sss:mm 这是通俗的格式 无论你怎么创建 都会被转换为这个样式 业务上对于不关系的 我们 就要有所取舍 时间的操作 是一个比较头疼的问题 当我们创建出来的
时候 就不得不考虑业务上的那些状况 在数据存储的时候 我们要把一个创建的时间按照希望存进数据库 那就离不开这么两个标签
@DateTimeFormat 这个标签是存在数据库用的 叫入参
@JsonFormat 这是从数据看取出时间对象用的 叫出参
这样我们在存储的 时候不会出错 在sql中 或者是也去的Controller中已悄然存在是时间比对上的问题
问题会有这么些
数据库获取的规则scopsetime的是时分秒 当前试打卡时间是在打卡的时候先比对才进行存储的 创建的时间是完整格式
如果比对 就要三次进行比较 分别取出十分秒 比较麻烦 经过思考 最后我觉得写个工具类比较好
这儿存在一个bug 不过对于我们的项目不影响 就没有修改 如果使用的话 请判断一下replacede 首字母是否为0在使用
if(replace.aharAt(0) =='0'){
return replace = replace.replace("0,"");
}
在sql中 如果时间取出的样式 不一样 就无法比较取值 在我们考虑是否可补签的时候这是个等式关系 比较麻烦 时间比对 对于等式 sql 没有一点技巧 这样的函数 也不好好找 我查看了好多博客才找到的
获取当前主体对象 然后比对日期 是否可以补签 还有一个小现象要注意 在获取参数的时候过滤掉将来时间 这样的伪数据没必要在调用方法去数据库查询 写代码节约数据库的调用很重要 能业务上不去
访问数据库实现最好不要去访问数据库
这个在工资模块去获取考勤统计数据的时候回很无奈 可以传统的进行年月日比较 这是大于小于 的非等比较 也可以利用等式
当然也可以使用样式 转换成 一样的额格式进行对比
当然也可以前台页面进行比对 这个稍微麻烦点儿 我js写的不好 就提供一些方法吧