Forráskód Böngészése

控制台,保证百分比相加100%

zhaops 5 éve
szülő
commit
1a5d3a0d71

+ 6 - 2
src/main/java/com/diagbot/aggregate/ResultStatisticsAggregate.java

@@ -169,18 +169,22 @@ public class ResultStatisticsAggregate {
                 retList.addAll(numDTOList);
             } else {
                 int count = 0;
+                double sumPercent = 0d;
                 for (NumDTO numDTO : numDTOList) {
                     if (retList.size() < limitCount - 1) {
                         retList.add(numDTO);
                         count += numDTO.getNum();
+                        sumPercent = BigDecimal.valueOf(sumPercent)
+                                .add(BigDecimal.valueOf(numDTO.getPercent()))
+                                .doubleValue();
                     } else {
                         NumDTO otherNumDTO = new NumDTO();
                         int num = totle - count;
                         otherNumDTO.setName("其他");
                         otherNumDTO.setNum(num);
                         otherNumDTO.setTotleNum(totle);
-                        Double percent = BigDecimal.valueOf(num)
-                                .divide(BigDecimal.valueOf(totle), 4, RoundingMode.HALF_UP)
+                        Double percent = BigDecimal.valueOf(1)
+                                .subtract(BigDecimal.valueOf(sumPercent))
                                 .doubleValue();
                         otherNumDTO.setPercent(percent);
                         String percentStr

+ 6 - 2
src/main/java/com/diagbot/facade/ConsoleByDeptFacade.java

@@ -385,18 +385,22 @@ public class ConsoleByDeptFacade {
                     retList.addAll(entryByDeptList);
                 } else {
                     int count = 0;
+                    double sumPercent = 0d;
                     for (NumDTO numDTO : entryByDeptList) {
                         if (retList.size() < limitCount - 1) {
                             retList.add(numDTO);
                             count += numDTO.getNum();
+                            sumPercent = BigDecimal.valueOf(sumPercent)
+                                    .add(BigDecimal.valueOf(numDTO.getPercent()))
+                                    .doubleValue();
                         } else {
                             NumDTO otherNumDTO = new NumDTO();
                             int num = totle - count;
                             otherNumDTO.setName("其他");
                             otherNumDTO.setNum(num);
                             otherNumDTO.setTotleNum(totle);
-                            Double percent = BigDecimal.valueOf(numDTO.getNum())
-                                    .divide(BigDecimal.valueOf(totle), 4, RoundingMode.HALF_UP)
+                            Double percent = BigDecimal.valueOf(1)
+                                    .subtract(BigDecimal.valueOf(sumPercent))
                                     .doubleValue();
                             otherNumDTO.setPercent(percent);
                             String percentStr