复杂逻辑编码先用意语言,写好,然后逐步书写代码
写好后再抽出可以共用的方法---很重要,关系到代码的整洁,和后续可修改,可维护性
到坐席
是否选择订单
等额
选择坐席
不选择坐席
某一团队所有坐席
所有团队所有坐席
平均
选择坐席
不选择坐席
某一团队所有坐席
所有团队所有坐席
到团队
。。。
if(全团队||全坐席){
if(“分派座席”= “全部座席”){
//此处合并所有团队所有坐席情况,坐席具体归属再按照团队查
if(当前页勾选){
勾选为总量//弹窗分派;
if(等额数量){
if(选择坐席){
根据等额数量,将名单等额分配到选中的座席上,未勾选的座席不做分派,如果座席不够分配则弹窗提示“名单不足,请重新输入等额数量!
}else{//未选择
如果当前没有勾选座席,则根据等额数量,按默认顺序逐个分配,直到当前名单分派完毕,并且将已分派的座席打上勾
}
}
if(平均分配){
按照顺序给每个座席平均分配,如果座席数量不够则有多少名单分派多少名单,多出的座席空置。
}
}else{
//未选择当前页,查出所有这个人能看到的所有未分派名单,为总量
if(等额数量){
if(选择坐席){
根据等额数量,将名单等额分配到选中的座席上,未勾选的座席不做分派,如果座席不够分配则弹窗提示“名单不足,请重新输入等额数量!
}else{//未选择
如果当前没有勾选座席,则根据等额数量,按默认顺序逐个分配,直到当前名单分派完毕,并且将已分派的座席打上勾
}
}
if(平均分配){
按照顺序给每个座席平均分配,如果座席数量不够则有多少名单分派多少名单,多出的座席空置。
}
}
}
if(“全部团队” and“分派座席”=空白){
if(当前页勾选){
//勾选数据为总量
if(等额数量){
if(选择团队){
根据等额数量[输入的数量就是没每分数,剩下的不分配,总数是前面勾选的],将名单等额分配到选中的团队上,未勾选的团队不做分派,如果团队不够分配则弹窗提示“名单不足,请重新输入等额数量!”
}else{
//没有勾选团队
如果当前没有勾选团队[要全部分配完,没分完剩下],则根据等额数量,按默认顺序逐个分配,直到当前名单分派完毕,并且将已分派的团队打上勾。
}
}
if(平均分配){
按照顺序给每个团队平均分配,如果团队数量不够则有多少名单分派多少名单,多出的团队空置。[???剩余的余数如何???余数不分,不分的名单还是未分配]
}
}else{
//未选择当前页
if(等额数量){
if(选择团队){
根据等额数量[输入的数量就是没每分数,剩下的不分配,总数是前面勾选的],将名单等额分配到选中的团队上,未勾选的团队不做分派,如果团队不够分配则弹窗提示“名单不足,请重新输入等额数量!
}else{
//没有勾选团队
如果当前没有勾选团队[要全部分配完,没分完剩下],则根据等额数量,按默认顺序逐个分配,直到当前名单分派完毕,并且将已分派的团队打上勾。
}
}else{
//平均分配
按照顺序给每个团队平均分配,如果团队数量不够则有多少名单分派多少名单,多出的团队空置。[???剩余的余数如何???余数不分,不分的名单还是未分配]
}
}
}
}
代码最终实现:
@Transactional(rollbackFor = Exception.class)
@Override
public int updateByPrimaryKeySelective(List<FinancialSalesOrder> record,String optype,String userId) throws Exception{
FinancialSalesOrderDO recordde;
FinancialSalesOrderDO salesOrderDO;
if(record!=null&&record.size()>0){
//新加的分派规则,全部选项
if("all".equals(record.get(0).getTemId())||"all".equals(record.get(0).getEmpId())){
assignbatch(record, userId);
}else{
for(FinancialSalesOrder re: record) {
assignRecoverOrder(re);
}
}
return 1 ;
}else{
return 0;
}
}
见附件