1. 调用assignRule = CollectRuleMgr.getInstance().getAutoAssignRule(ruleId)根据规则ID获取保存自动分配规则,如果没有找到则返回null。
2. 获取规则列表:List paramList = assignRule.getRuleParamList()。
3. 获取分配级别:assignLevel = assignRule.getAssignToLevel();
4. 获取最高级别:highestLevel = Integer.parseInt(CollectorMgr.getHighestLevel());
5. 获取某个级别的催欠员列表:getCollectorsByLevel(int levelId, Boolean hasOperCode, String collectorType)
6. 返回校验员的分配比例:getAssignProportionList(Connection conn, List validaterIds),这一步操作了两张表:dc_credit_validate_task,dc_collector
7. 调用assignTask(CreditValidateTaskViewValue task)方法,进行任务分配。获取一个最合适的校验员:getValidaterId(conn, task, assignRule);
8. 调用List metValidaterIdList = getMetValidaterIdList(conn,groupIdSet) 获得满足条件的校验员的列表。
9. 调用CreditValidateMgr类中的assignTask(Connection conn, CreditValidateTaskViewValue task, String validaterId, String checkStaffId)分配任务,执行sql:update dc_credit_validate_task t set t.validator_id = ? , t.check_staff_id = ?, t.status = 2, t.assign_date = ?, t.oper_id = 19, t.oper_date = ?, where t.task_id = ?。 也就是在这一步将任务分配给了具体的校验员。
10. 如果不是手动执行该任务则:它会在启动服务器的时候就开始运行BossTaskStartup类中的main()方法,将所有的任务都加入到一个队列中去,然后根据各任务执行频率执行定时任务,处理逻辑也与手动执行逻辑类似。