proginn09592970492022年10月09日
118阅读

作品详情

为配合营销分公司发展,开发的一款统计每月兽药和动保库存情况的进销存项目。
后台通过Springboot+Mybatis+redis+MySQL+帆软报表搭建
一,责任描述
负责库存报表,入库报表,毛利分析表,销售出库分析表等报表实现
负责采购订单,合同,入库,折扣模块的Java后端开发
负责部分前端js的编写
负责部署到Linux测试机
二,技术亮点
1.实现了订单过期自动取消功能,通过自定义OrderUnPaidTask实现Delayed,Runnable接口,设置过期事件后自动调用delayQueue.take()方法,take方法会执行OrderUnPaidTask中重写的run方法,run方法到期自动执行。如果订单是已付款,则return,如果不是,设置订单为已取消状态,商品货品库存数量增加。
2,实现订单数量的实时显示,通过自定义的OrderNumberInterceptor实现HandlerInterceptor拦截器,每次请求会获取根据用户id获取用户的订单数量。
3.通过自定义@RepeatSubmit,实现防止重复提交采购订单。具体由AOP实现,在需要防止重复提交的方法加上注解,获取切点的method名和参数,并保存到session,设置过期时间,当在过期时间内再次访问,并且和上一次方法名和参数一致时,抛出异常。
4.实现了通过枚举封装返回的结果。
5.通过redis重构了数据读写,具体为读的时候先看redis中有无数据,有数据则直接读取,无数据则查询mysql数据,然后保存到redis中,对于写,先更新mysql数据库,再删除redis数据。
6.使用存储过程对实时库存查询进行了优化
7.使用spring-mail实现了邮件推送
8.后端采用nginx部署多节点springboot项目,实现了负载均衡
三,遇到的问题以及如何解决
1.使用nginx部署时,负载均衡 session问题
将多个节点springboot项目中session都保存到同一个redis中,保证一致性
2,入库业务mysql数据库请求超时
优化sql,调整最大连接数。
3.后端入库接口请求超时
优化代码,将双层for循环改为一层,使用EnumMap代替map。
声明:本文仅代表作者观点,不代表本站立场。如果侵犯到您的合法权益,请联系我们删除侵权资源!如果遇到资源链接失效,请您通过评论或工单的方式通知管理员。未经允许,不得转载,本站所有资源文章禁止商业使用运营!
下载安装【程序员客栈】APP
实时对接需求、及时收发消息、丰富的开放项目需求、随时随地查看项目状态

评论