为了更好的管理商品日期,需要对仓库的商品进行预警管理,对商品的保质期控制在一个范围内提示出来,也可以通过该功能间接的展示出一个商品的的销量程度和对下次进货做个考量!
1. 预警需求分析 前端界面需要设置商品的预警天数后端保存预警天数数据库有字段存放商品需要预警的天数通过定时器运行指点方法算出对应那些商品的批次存低于设置的预警天数查询出来在wms首页展出 2.数据库表对于前端界面的开发不做过多的代码分析,本次重点展示商品预警实现思路!!数据库用到到字段会截取出来,便于理解!
商品表数据:
预警表数据:
商品批次表:
商品批次表中添加预警字段:后续查询对应的预警信息作为标志
Mysql使用到的函数
如:
由此我们就可以通过函数算出商品距离过期的天数
查询语句:
需要注意: 查询或者修改表数据我们如果只要使用某个字段去修改,尽量查询下该表更新的字段数据是否有重复的数据并且其他字段可能跟我们预想不一致,必须要修改的,我们就应该使用多字段去查询修改
查询重复数据
查询预警批次数量: 因为需要展示出来在前端可以给用户点击查看货物存放的地方,所以查询出来的数据库存数量要大于0
2.后端代码实现: 1. 定时器任务使用Scheduled作为定时器,通过cron语法指定运行时间,每3小时运行一次表达式如下
代码详情注释写的也比较清楚
这里面还存在一个问题,如果批次被打上预警标识,此时客户更改了商品的预警日期,那么商品的预警可能就没有到达,但是页面查询预警也能被查询出来,解决方案,使用mq来做处理,当客户更改了商品编码预警信息,那么程序就把更改的商品编码存到mq中我们在写个消费方法来消费更改后的商品编码单独走波预警方法
2.优化加入队列先不考虑全局预警设置,只对勾选多个商品进行添加队列
使用了springBoot的rabbitMq模板类RabbitTemplate
pom.xml引入:
生产者添加消息到队列中
消费者:
3.注意:关于Mq生产者,生产的数据类型一定要要和消费者获取的类型要一致,否则会无限循环报错
4.测试是否成功生产者存入队列:
消费者获取数据:
如果消费方法报错不try/catch的话,队列就会一直重试该条数据
可以看出已经获取到修改预警商品的商品编号,这个时候我们只要写方法做相应的处理就行了我们也可以去RabbitMq管理界面查看队列信息
消费方法代码:
关于一些代码存在冗余我们可以提取成一个公共方法进行调用,后续也对全局修改预警Mq队列走波运算预警的商品
重载方法:
3.前端提一嘴给商品添加预警日期,需要用户提些数据,为了避免出现英文空格等我们需要,对输入的数据进行正则,只能输入数字
效果:
英文:
但是可以输入0,如果预警日期设置成了0你们就意味着废弃该商品预警提示功能
前端展示:首页:
预警商品列表:
以上就是java开发WMS仓库商品预警需求示例解析的详细内容,更多关于java开发WMS仓库商品预警的资料请关注七叶笔记其它相关文章!