From 9c7ff52aef5dc4845b2d507d530c6c5cf18f2491 Mon Sep 17 00:00:00 2001 From: kongdeqiang <123456> Date: 星期一, 13 二月 2023 17:16:07 +0800 Subject: [PATCH] 增加功能 --- xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java | 45 ++++++++++++++++++---- xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml | 33 +++++++--------- 2 files changed, 50 insertions(+), 28 deletions(-) diff --git a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java index ca87496..c8640f4 100644 --- a/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java +++ b/xboot-modules/xboot-your/src/main/java/cn/exrick/xboot/your/serviceimpl/ISignCountServiceImpl.java @@ -15,6 +15,7 @@ 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; @@ -43,29 +44,55 @@ 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); diff --git a/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml b/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml index 6ff70ab..ea85e3e 100644 --- a/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml +++ b/xboot-modules/xboot-your/src/main/resources/mapper/SignCountMapper.xml @@ -80,22 +80,22 @@ <select id="signCount" resultType="cn.exrick.xboot.your.entity.OrderStatusCount"> SELECT - DATE_FORMAT(send_date,'%Y-%m-%d') as sendDate, + CONCAT_WS('',YEAR(send_date),'骞�',MONTH(send_date),'鏈�')sendMonth, + DATE(DATE_FORMAT(send_date,'%Y-%m-%d') ) sendDate, + car_name, + batch, + SUM( amount ) amount, + SUM( abnormal_sign ) as abnormalSign, + SUM( not_sign_count ) as notSignCount, + SUM( sign_count ) as signCount , + CONCAT_WS( '',( FORMAT((SUM( sign_count ) / SUM( amount )),4 ) *100), '%') as proportion, (CASE `batch` WHEN '01娈�' THEN batch ELSE 0 END) as 'oneBatch', (CASE `batch` WHEN '02娈�' THEN batch ELSE 0 END) as 'twoBatch', (CASE `batch` WHEN '03娈�' THEN batch ELSE 0 END) as 'threeBatch', (CASE `batch` WHEN '04娈�' THEN batch ELSE 0 END) as 'fourBatch', (CASE `batch` WHEN '05娈�' THEN batch ELSE 0 END) as 'fiveBatch', - CONCAT_WS('',YEAR(send_date),'骞�',MONTH(send_date),'鏈�')sendMonth, - amount, - abnormal_sign as abnormalSign, - not_sign_count as notSignCount, - sign_count as signCount , - CONCAT_WS( '',ROUND(proportion,0), '%') as proportion, - car_name, - line, - batch, - user_name as userName + user_name as userName, + line FROM t_sign <where> @@ -123,16 +123,11 @@ </if> </where> GROUP BY - send_date, car_name, - line, + send_date, batch, - amount, - abnormal_sign, - not_sign_count, - sign_count, - proportion, - user_name + user_name, + line ORDER BY line ASC, send_date asc -- Gitblit v1.9.1