修改代码

master
bynt 3 years ago
parent 9065fabf13
commit 304cfee014

@ -1,5 +1,6 @@
package com.baiye.service;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.map.MapUtil;
import cn.hutool.core.util.NumberUtil;
import com.baiye.constant.DefaultNumberConstants;
@ -16,7 +17,6 @@ import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
import java.util.Map;
import java.util.concurrent.CopyOnWriteArrayList;
import java.util.stream.Collectors;
/**
@ -31,14 +31,13 @@ public class AssignDataService {
int size = distribution.getDeptIds().size();
List<Long> deptIds = distribution.getDeptIds();
List<Double> weights = distribution.getWeights();
CopyOnWriteArrayList<String> resourceList =
Lists.newCopyOnWriteArrayList(distribution.getResourceList());
List<String> resourceList = distribution.getResourceList();
// 数据打乱
Collections.shuffle(resourceList);
// 去除重复数据
CopyOnWriteArrayList<String> copyOnWriteArrayList =
Lists.newCopyOnWriteArrayList(Sets.newHashSet(resourceList));
int resourceSize = copyOnWriteArrayList.size();
List<String> arrayList =
Lists.newArrayList(Sets.newHashSet(resourceList));
int resourceSize = arrayList.size();
// 集合求和
double sum = weights.stream().mapToDouble(Double::doubleValue).sum();
if (sum != DefaultNumberConstants.ONE_HUNDRED) {
@ -48,7 +47,7 @@ public class AssignDataService {
Map<Long, Double> deptMap =
deptIds.stream().collect(Collectors.toMap(key -> key, key -> weights.get(deptIds.indexOf(key))));
Map<Long, Double> longDoubleMap = MapUtil.sortByValue(deptMap, Boolean.FALSE);
CopyOnWriteArrayList<String> value;
List<String> value;
List<DistributeResponseDTO> list = new ArrayList<>();
DistributeResponseDTO distributeResponseDTO;
int num = DefaultNumberConstants.ZERO_NUMBER;
@ -62,22 +61,25 @@ public class AssignDataService {
Double.valueOf(DefaultNumberConstants.ONE_HUNDRED), DefaultNumberConstants.TWO_HUNDRED);
int count = (int) Math.floor(NumberUtil.mul(resourceSize, div));
if (count == DefaultNumberConstants.ONE_NUMBER) {
int middle = copyOnWriteArrayList.size() / DefaultNumberConstants.TWO_NUMBER;
value = Lists.newCopyOnWriteArrayList(Lists.newArrayList(copyOnWriteArrayList.get(middle)));
int middle = arrayList.size() / DefaultNumberConstants.TWO_NUMBER;
value = Lists.newArrayList(arrayList.get(middle));
distributeResponseDTO.setResponseList(value);
distributeResponseDTO.setDeptId(key);
list.add(distributeResponseDTO);
copyOnWriteArrayList.remove(middle);
// copyOnWriteArrayList.remove(middle);
arrayList = CollUtil.subtractToList(arrayList, value);
continue;
}
value = Lists.newCopyOnWriteArrayList
(copyOnWriteArrayList.subList(DefaultNumberConstants.ZERO_NUMBER, count));
value = Lists.newArrayList
(arrayList.subList(DefaultNumberConstants.ZERO_NUMBER, count));
distributeResponseDTO.setResponseList(value);
distributeResponseDTO.setDeptId(key);
list.add(distributeResponseDTO);
copyOnWriteArrayList.removeAll(value);
// 并集方式删除元素
arrayList = CollUtil.subtractToList(arrayList, value);
// copyOnWriteArrayList.removeAll(value);
} else {
value = Lists.newCopyOnWriteArrayList(Lists.newArrayList(copyOnWriteArrayList));
value = Lists.newCopyOnWriteArrayList(Lists.newArrayList(arrayList));
distributeResponseDTO.setResponseList(value);
distributeResponseDTO.setDeptId(longDoubleEntry.getKey());
list.add(distributeResponseDTO);

@ -36,7 +36,7 @@ public class SettingTest {
List<String> strings = Lists.newArrayList("a", "b", "c", "d","e","f","g","h","i","j");
List<Long> longs = Lists.newArrayList(12360L, 12361L,12362L,12363L,12364L,12365L);
List<Double> doubleList = Lists.newArrayList(40.0, 20.0,10.0,15.0,10.0,5.0);
List<Double> doubleList = Lists.newArrayList(16.66, 16.66,16.66,16.66,16.66,16.7);
distributeDTO.setResourceList(strings);
distributeDTO.setWeights(doubleList);
distributeDTO.setDeptIds(longs);

Loading…
Cancel
Save