| | |
| | | import org.springframework.stereotype.Service; |
| | | import org.springframework.transaction.annotation.Transactional; |
| | | |
| | | import java.text.DecimalFormat; |
| | | import java.util.ArrayList; |
| | | import java.util.List; |
| | | import java.util.Map; |
| | |
| | | page.setSize(-1); |
| | | } |
| | | if(StringUtil.isNotBlank(orderStatusCount.getStatisticalType())){ |
| | | IPage<OrderStatusCount> orderStatusCountIPage = this.signCountMapper.signCounts(orderStatusCount, page); |
| | | IPage<OrderStatusCount> orderStatusCountIPage = this.signCountMapper.signCount(orderStatusCount, page); |
| | | List<OrderStatusCount> records = orderStatusCountIPage.getRecords(); |
| | | List<OrderStatusCount> recordsLast = new ArrayList<>(); |
| | | Map<String, List<OrderStatusCount>> collect = records.stream().collect(Collectors.groupingBy(OrderStatusCount::getCarName)); |
| | | for (Map.Entry<String, List<OrderStatusCount>> stringListEntry : collect.entrySet()) { |
| | | for (Map.Entry<String, List<OrderStatusCount>> listEntry : stringListEntry.getValue().stream().collect(Collectors.groupingBy(OrderStatusCount::getBatch)).entrySet()) { |
| | | for (Map.Entry<String, List<OrderStatusCount>> listEntry1 : listEntry.getValue().stream().collect(Collectors.groupingBy(OrderStatusCount::getSendDate)).entrySet()) { |
| | | List<OrderStatusCount> recordsNew = new ArrayList<>(); |
| | | for (OrderStatusCount statusCount : stringListEntry.getValue()) { |
| | | statusCount.setSendDate(statusCount.getSendMonth()); |
| | | recordsNew.add(statusCount); |
| | | } |
| | | |
| | | for (Map.Entry<String, List<OrderStatusCount>> listEntry : recordsNew.stream().collect(Collectors.groupingBy(OrderStatusCount::getBatch)).entrySet()) { |
| | | for (Map.Entry<String, List<OrderStatusCount>> listEntry1 : listEntry.getValue().stream().collect(Collectors.groupingBy(OrderStatusCount::getSendMonth)).entrySet()) { |
| | | if(listEntry1.getValue().size() > 0){ |
| | | List<OrderStatusCount> value = listEntry1.getValue(); |
| | | Integer amount = 0; |
| | | Integer notSignCount = 0; |
| | | Integer abnormalSign = 0; |
| | | Integer signCount= 0; |
| | | OrderStatusCount orderStatusCount1 = value.get(0); |
| | | Double prodouble = value.stream().collect(Collectors.averagingInt(OrderStatusCount::getProportionInt)); |
| | | prodouble = (double)Math.round(prodouble*100)/100; |
| | | orderStatusCount1.setProportion(prodouble + "%"); |
| | | for (OrderStatusCount statusCount : value) { |
| | | amount += Integer.parseInt(statusCount.getAmount()); |
| | | notSignCount += Integer.parseInt(statusCount.getNotSignCount()); |
| | | if(statusCount.getAbnormalSign() != null){ |
| | | abnormalSign += Integer.parseInt(statusCount.getAbnormalSign()); |
| | | }else { |
| | | abnormalSign = 0; |
| | | } |
| | | signCount += Integer.parseInt(statusCount.getSignCount()); |
| | | } |
| | | DecimalFormat df = new DecimalFormat("0.00"); |
| | | String maerialRatio = df.format((float)signCount/amount); |
| | | double v = Double.parseDouble(maerialRatio)*100; |
| | | orderStatusCount1.setProportion(v+"%"); |
| | | orderStatusCount1.setAmount(amount+""); |
| | | orderStatusCount1.setNotSignCount(notSignCount+""); |
| | | orderStatusCount1.setAbnormalSign(abnormalSign+""); |
| | | orderStatusCount1.setSignCount(signCount+""); |
| | | value.clear(); |
| | | value.add(orderStatusCount1); |
| | | listEntry1.setValue(value); |
| | | recordsLast.add(orderStatusCount1); |
| | | } |
| | | } |
| | | |
| | | } |
| | | |
| | | stringListEntry.setValue(recordsNew); |
| | | } |
| | | List<OrderStatusCount> collect1 = records.stream().filter(f -> f.getProportion() != null).collect(Collectors.toList()); |
| | | orderStatusCountIPage.setRecords(collect1); |
| | | orderStatusCountIPage.setRecords(recordsLast); |
| | | return orderStatusCountIPage; |
| | | } |
| | | return this.signCountMapper.signCount(orderStatusCount,page); |