From f367d6866f3e18e6ad946290bc321adfa2d80174 Mon Sep 17 00:00:00 2001 From: bynt Date: Wed, 5 Jan 2022 13:39:50 +0800 Subject: [PATCH] =?UTF-8?q?=E5=A2=9E=E5=8A=A0=E5=B9=B3=E5=9D=87=E5=88=86?= =?UTF-8?q?=E9=85=8D=E4=BB=A3=E7=A0=81?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../com/baiye/service/AssignDataService.java | 27 ++++++++++++++++++- .../src/test/java/com/baiye/SettingTest.java | 13 ++++++--- 2 files changed, 35 insertions(+), 5 deletions(-) diff --git a/services/ad-platform-service/src/main/java/com/baiye/service/AssignDataService.java b/services/ad-platform-service/src/main/java/com/baiye/service/AssignDataService.java index be2fc4e1..1d4f4838 100644 --- a/services/ad-platform-service/src/main/java/com/baiye/service/AssignDataService.java +++ b/services/ad-platform-service/src/main/java/com/baiye/service/AssignDataService.java @@ -31,6 +31,8 @@ public class AssignDataService { int size = distribution.getDeptIds().size(); List deptIds = distribution.getDeptIds(); List weights = distribution.getWeights(); + // 返回数据结果 + List list = new ArrayList<>(); List resourceList = distribution.getResourceList(); // 数据打乱 Collections.shuffle(resourceList); @@ -38,6 +40,30 @@ public class AssignDataService { List arrayList = Lists.newArrayList(Sets.newHashSet(resourceList)); 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 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(); 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)))); Map longDoubleMap = MapUtil.sortByValue(deptMap, Boolean.FALSE); List value; - List list = new ArrayList<>(); DistributeResponseDTO distributeResponseDTO; int num = DefaultNumberConstants.ZERO_NUMBER; for (Map.Entry longDoubleEntry : longDoubleMap.entrySet()) { diff --git a/services/ad-platform-service/src/test/java/com/baiye/SettingTest.java b/services/ad-platform-service/src/test/java/com/baiye/SettingTest.java index 7ea117ab..911305d1 100644 --- a/services/ad-platform-service/src/test/java/com/baiye/SettingTest.java +++ b/services/ad-platform-service/src/test/java/com/baiye/SettingTest.java @@ -32,10 +32,15 @@ public class SettingTest { @Test public void getSetting() { DistributeDTO distributeDTO = new DistributeDTO(); - - List strings = Lists.newArrayList("a", "b", "c", "d","e","f","g","h","i","j"); - - String s = JSONUtil.toJsonStr(strings); + List strings = Lists.newArrayList(1L,2L,3L,4L,5L,6L,7L,8L,9L,10L); + + List longs = Lists.newArrayList(12360L, 12361L,12362L,12363L,12365L); + List doubleList = Lists.newArrayList(16.66, 16.66,16.66,16.66,16.66,16.7); + distributeDTO.setResourceList(strings); + distributeDTO.setIsWeight(Boolean.TRUE); + distributeDTO.setWeights(doubleList); + distributeDTO.setDeptIds(longs); + log.info(JSONUtil.toJsonStr(assignDataService.assignData(distributeDTO))); }