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