|
|
@ -31,6 +31,8 @@ public class AssignDataService {
|
|
|
|
int size = distribution.getDeptIds().size();
|
|
|
|
int size = distribution.getDeptIds().size();
|
|
|
|
List<Long> deptIds = distribution.getDeptIds();
|
|
|
|
List<Long> deptIds = distribution.getDeptIds();
|
|
|
|
List<Double> weights = distribution.getWeights();
|
|
|
|
List<Double> weights = distribution.getWeights();
|
|
|
|
|
|
|
|
// 返回数据结果
|
|
|
|
|
|
|
|
List<DistributeResponseDTO> list = new ArrayList<>();
|
|
|
|
List<Long> resourceList = distribution.getResourceList();
|
|
|
|
List<Long> resourceList = distribution.getResourceList();
|
|
|
|
// 数据打乱
|
|
|
|
// 数据打乱
|
|
|
|
Collections.shuffle(resourceList);
|
|
|
|
Collections.shuffle(resourceList);
|
|
|
@ -38,6 +40,30 @@ public class AssignDataService {
|
|
|
|
List<Long> arrayList =
|
|
|
|
List<Long> arrayList =
|
|
|
|
Lists.newArrayList(Sets.newHashSet(resourceList));
|
|
|
|
Lists.newArrayList(Sets.newHashSet(resourceList));
|
|
|
|
int resourceSize = arrayList.size();
|
|
|
|
int resourceSize = arrayList.size();
|
|
|
|
|
|
|
|
Boolean isWeight = distribution.getIsWeight();
|
|
|
|
|
|
|
|
if (isWeight == null || !isWeight) {
|
|
|
|
|
|
|
|
int remainder = resourceList.size() % deptIds.size();
|
|
|
|
|
|
|
|
int number = resourceList.size() / deptIds.size();
|
|
|
|
|
|
|
|
int offset = DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
|
|
|
|
List<Long> value;
|
|
|
|
|
|
|
|
DistributeResponseDTO distributeResponseDTO;
|
|
|
|
|
|
|
|
for (int i = DefaultNumberConstants.ZERO_NUMBER; i < deptIds.size(); i++) {
|
|
|
|
|
|
|
|
distributeResponseDTO = new DistributeResponseDTO();
|
|
|
|
|
|
|
|
if (remainder > DefaultNumberConstants.ZERO_NUMBER) {
|
|
|
|
|
|
|
|
value = resourceList.subList(i * number + offset,
|
|
|
|
|
|
|
|
(i + DefaultNumberConstants.ONE_NUMBER) * number + offset + DefaultNumberConstants.ONE_NUMBER);
|
|
|
|
|
|
|
|
remainder--;
|
|
|
|
|
|
|
|
offset++;
|
|
|
|
|
|
|
|
} else {
|
|
|
|
|
|
|
|
value = resourceList.subList
|
|
|
|
|
|
|
|
(i * number + offset, (i + DefaultNumberConstants.ONE_NUMBER) * number + offset);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
distributeResponseDTO.setResponseList(value);
|
|
|
|
|
|
|
|
distributeResponseDTO.setDeptId(deptIds.get(i));
|
|
|
|
|
|
|
|
list.add(distributeResponseDTO);
|
|
|
|
|
|
|
|
}
|
|
|
|
|
|
|
|
return CommonResponse.createBySuccess(list);
|
|
|
|
|
|
|
|
}
|
|
|
|
// 集合求和
|
|
|
|
// 集合求和
|
|
|
|
double sum = weights.stream().mapToDouble(Double::doubleValue).sum();
|
|
|
|
double sum = weights.stream().mapToDouble(Double::doubleValue).sum();
|
|
|
|
if (sum != DefaultNumberConstants.ONE_HUNDRED) {
|
|
|
|
if (sum != DefaultNumberConstants.ONE_HUNDRED) {
|
|
|
@ -48,7 +74,6 @@ public class AssignDataService {
|
|
|
|
deptIds.stream().collect(Collectors.toMap(key -> key, key -> weights.get(deptIds.indexOf(key))));
|
|
|
|
deptIds.stream().collect(Collectors.toMap(key -> key, key -> weights.get(deptIds.indexOf(key))));
|
|
|
|
Map<Long, Double> longDoubleMap = MapUtil.sortByValue(deptMap, Boolean.FALSE);
|
|
|
|
Map<Long, Double> longDoubleMap = MapUtil.sortByValue(deptMap, Boolean.FALSE);
|
|
|
|
List<Long> value;
|
|
|
|
List<Long> value;
|
|
|
|
List<DistributeResponseDTO> list = new ArrayList<>();
|
|
|
|
|
|
|
|
DistributeResponseDTO distributeResponseDTO;
|
|
|
|
DistributeResponseDTO distributeResponseDTO;
|
|
|
|
int num = DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
int num = DefaultNumberConstants.ZERO_NUMBER;
|
|
|
|
for (Map.Entry<Long, Double> longDoubleEntry : longDoubleMap.entrySet()) {
|
|
|
|
for (Map.Entry<Long, Double> longDoubleEntry : longDoubleMap.entrySet()) {
|
|
|
|