package com.svtech.icbc.report.service.dividecase;
import com.svtech.icbc.report.entity.original.RptOfCaseOriginal;
import com.svtech.icbc.report.vo.changecase.Teller;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
-
Created with IntelliJ IDEA.
-
@Auther: ZZJ
-
@Date: 2020/09/09/11:08
-
@Description:
*/
@Slf4j
@Service
public class DivisionService {//按比分配
public static List divideCaseByPercent(List tellers, List cases){
int index=0;//定义下标
List divisionResult=new ArrayList();//分案结果
while (cases.size()!=0){//只要案件没分完就一直循环
if (index>tellers.size()-1){//当分完一轮后,重置下标,用户顺序翻转
index=0;
Collections.reverse(tellers);
}else {
int count=tellers.get(index).getSplitCount();
int size=tellers.get(index).getCases().size();
if (count<=size){//判断用户所能分配的数目是否达到最大值,如果不可分,将该用户移除
divisionResult.add(tellers.get(index));
tellers.remove(index);
if (tellers.size()==1){//如果只剩最后一个用户则将剩余案件全部分给这个人
divisionResult.addAll(tellers);
}else {//否则向下递归寻找可分配的人
divisionResult.addAll(divideCaseByPercent(tellers,cases));
}}else {//当前用户可分案件未达到最大值则直接分配,并将案件从列表中移除,游标下移 tellers.get(index).getCases().add(cases.get(0)); index++; cases.remove(0); } } } return divisionResult;
}
//平均分配
public static List divideCase( List tellers,List cases){
int index=0;
while (cases.size()!=0){
if (index>tellers.size()-1){
index=0;
Collections.reverse(tellers);
}else {
tellers.get(index).getCases().add(cases.get(0));
index++;
cases.remove(0);
}} return tellers;
}
}