具体需求咱就不说了毕竟是公司的内部代码和业务需求,咱说个大概怎么实现和思路以及在组长指导下学到的内容。
直接开整!
先说下大概的业务需求吧
定时把A人员表插入B表中让A表人员有内部销售资格
这个需求吧,平时也没接触过正儿八经的定时任务,只有自己写的Demo,所以属于第一次写,公司用的定时任务框架是Quartz。平时写的Demo也没使用过所以写之前先查询了相关文档
下图为本部门所用quartz写法
![](https://i-blog.csdnimg.cn/blog_migrate/1fc1e0c46be48bbb0283c6682a373cf5.jpeg)
Cron-expression为触发定时器的时间具体可看
写一个定时的任务
写一个工厂调度器
在调度器里调用定时任务的业务逻辑
具体咱也没操作过只能说个大概毕竟都是搭建好的,咱只是一个cv工程师
大概业务就是
A人员表要插入B表中,由于B表和A表没有主外键关系,所以需要设计一个映射表来连系A,B两表。
还有一个问题就是A人员表的子字段Id是树状的还有一个大A表关联着A表的子字段Id ,需要用A表的子字段Id找到大A表的父Id来进行映射设计(其实是大A表的父Id太多懒得一个个弄组长才让搞一个最上级映射来当A,B表的关联表)
映射表设计好后,哥们犯难了:亚雷没写过树形查询的逻辑啊,定时器能cv,这逻辑咋cv。
冥思苦想两天终于走到了让组长帮忙这一步,当然也是经过自己思考的虽然写的都是屎山被批斗了
最后经过组长的重新编写,小垃圾本人打断点一点点理解之后才懂了一点树状查询的方法
话不多说上代码
![](https://i-blog.csdnimg.cn/blog_migrate/66c69022386a0b99424b3c271d3c73a3.jpeg)
先遍历一边筛出来的A表的子字段Id
在不断的用 FirstOrDefault 来找大A表的父Id,在继续通过大A表的父Id找到映射表设计好的关联Id,找到了关联的Id就直接插入到B表的数据库中,当然数据够多可以分批插入,方便优化运行时间。
写完逻辑,定好执行时间就是一个完整的定时任务啦。
以上就是本菜逼第一次接触定时器和树状查询的过程,组长重写了主要的逻辑,剩下的细碎的逻辑就是我自己写的一些个健壮性判断了