|
|
@@ -17,6 +17,7 @@ import org.springframework.stereotype.Service;
|
|
|
|
|
|
import javax.annotation.Resource;
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.math.RoundingMode;
|
|
|
import java.time.LocalDate;
|
|
|
import java.time.ZoneId;
|
|
|
import java.time.format.DateTimeFormatter;
|
|
|
@@ -575,19 +576,19 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
|
|
|
for (AdminPublicDuration e : list) {
|
|
|
String id = e.getId(); // 假设 AdminStatisticsBo 有一个 getId() 方法
|
|
|
BigDecimal duration = BigDecimal.valueOf(e.getDuration()); // 假设 AdminStatisticsBo 有一个 getCallDurationSum() 方法
|
|
|
+ if(!nameMap.containsKey(id)){
|
|
|
+ String name = e.getName();
|
|
|
+ nameMap.put(id, name);
|
|
|
+ }
|
|
|
if (durationMap.containsKey(id)) {
|
|
|
BigDecimal currentDuration = durationMap.get(id);
|
|
|
durationMap.put(id, currentDuration.add(duration));
|
|
|
- String name = e.getName();
|
|
|
- nameMap.put(id, name);
|
|
|
} else {
|
|
|
durationMap.put(id, duration);
|
|
|
}
|
|
|
}
|
|
|
- List<AdminPublicDuration> list2=new ArrayList<>();
|
|
|
- for (Map.Entry<String, BigDecimal> entry : durationMap.entrySet()) {
|
|
|
- list2.add(new AdminPublicDuration(entry.getKey(),nameMap.get(entry.getKey()),entry.getValue().doubleValue()));
|
|
|
- }
|
|
|
+ List<AdminPublicDuration> list2=sumDurationsById(list);
|
|
|
+
|
|
|
Map<String,Object> map=new HashMap<>();
|
|
|
map.put("date",list);
|
|
|
map.put("count",list2);
|
|
|
@@ -595,6 +596,32 @@ public class AdminStatisticsServiceImpl implements AdminStatisticsService {
|
|
|
}
|
|
|
|
|
|
|
|
|
+ public List<AdminPublicDuration> sumDurationsById(List<AdminPublicDuration> adminPublicDurations) {
|
|
|
+ Map<String, AdminPublicDuration> durationMap = new HashMap<>();
|
|
|
+
|
|
|
+ for (AdminPublicDuration adminPublicDuration : adminPublicDurations) {
|
|
|
+ String id = adminPublicDuration.getId();
|
|
|
+ String name = adminPublicDuration.getName();
|
|
|
+ double duration = adminPublicDuration.getDuration();
|
|
|
+
|
|
|
+ if (durationMap.containsKey(id)) {
|
|
|
+ AdminPublicDuration summary = durationMap.get(id);
|
|
|
+ BigDecimal countDuration = BigDecimal.valueOf(summary.getDuration()).add(BigDecimal.valueOf(duration));
|
|
|
+ summary.setDuration(countDuration.doubleValue());
|
|
|
+ summary.setName(name);
|
|
|
+ summary.setCountNumber(summary.getCountNumber()+1);
|
|
|
+ BigDecimal divide = BigDecimal.valueOf(summary.getDuration()).divide(BigDecimal.valueOf(summary.getCountNumber()), 2, RoundingMode.HALF_UP);
|
|
|
+ summary.setDays(divide.doubleValue());
|
|
|
+ } else {
|
|
|
+ durationMap.put(id, new AdminPublicDuration(id, name, duration));
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
+ return new ArrayList<>(durationMap.values());
|
|
|
+ }
|
|
|
+
|
|
|
+
|
|
|
|
|
|
|
|
|
|