数据修复

master
lzq 2025-08-30 17:46:09 +08:00
parent c368688860
commit 6d3e1b631b
6 changed files with 56 additions and 19 deletions

View File

@ -1,5 +1,6 @@
package com.njzscloud.supervisory.statistics.mapper; package com.njzscloud.supervisory.statistics.mapper;
import com.baomidou.mybatisplus.core.conditions.Wrapper;
import com.njzscloud.supervisory.statistics.pojo.*; import com.njzscloud.supervisory.statistics.pojo.*;
import org.apache.ibatis.annotations.Mapper; import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param; import org.apache.ibatis.annotations.Param;
@ -25,4 +26,6 @@ public interface TianQingStatisticsMapper {
Double disposeWeight(@Param("startTime") Long startTime, @Param("endTime") Long endTime); Double disposeWeight(@Param("startTime") Long startTime, @Param("endTime") Long endTime);
List<OrderAmountSummary> getOrderAmountSummary(@Param("startTime") Long startTime, @Param("endTime") Long endTime); List<OrderAmountSummary> getOrderAmountSummary(@Param("startTime") Long startTime, @Param("endTime") Long endTime);
List<String> getGoodsNames(@Param("ew") Wrapper<Object> ew, @Param("count") int count);
} }

View File

@ -14,5 +14,6 @@ public class GarbageDisposeSummary {
private Double weight; private Double weight;
private Integer depotType; private Integer depotType;
private String depotName; private String depotName;
private String icon;
private Double percentage; private Double percentage;
} }

View File

@ -46,13 +46,19 @@ public class ShouJuStatisticsService implements StatisticsService {
}); });
CompletableFuture<List<GarbageDisposeSummary>> garbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getGarbageDisposeSummary) CompletableFuture<List<GarbageDisposeSummary>> garbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getGarbageDisposeSummary)
.thenApply(list -> { .thenApply(list -> {
Double garbageDisposeSummary_totalWeight = list.stream() Double garbageDisposeSummary_totalWeight_1 = list.stream()
.filter(it -> it.getDepotType() == 1) .filter(it -> it.getDepotType() == 1)
.map(GarbageDisposeSummary::getWeight) .map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D); .reduce(Double::sum).orElse(0D);
Double garbageDisposeSummary_totalWeight_2 = list.stream()
.filter(it -> it.getDepotType() == 2)
.map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D);
for (GarbageDisposeSummary disposeSummary : list) { for (GarbageDisposeSummary disposeSummary : list) {
disposeSummary.setPercentage(garbageDisposeSummary_totalWeight == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight * 100); disposeSummary.setPercentage(disposeSummary.getDepotType() == 1 ?
garbageDisposeSummary_totalWeight_1 == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight_1 * 100 :
garbageDisposeSummary_totalWeight_2 == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight_2 * 100);
} }
return list; return list;
}) })

View File

@ -4,6 +4,7 @@ import cn.hutool.core.date.DateTime;
import cn.hutool.core.date.DateUtil; import cn.hutool.core.date.DateUtil;
import cn.hutool.core.date.Week; import cn.hutool.core.date.Week;
import cn.hutool.core.map.MapUtil; import cn.hutool.core.map.MapUtil;
import com.baomidou.mybatisplus.core.toolkit.Wrappers;
import com.njzscloud.common.core.tuple.Tuple2; import com.njzscloud.common.core.tuple.Tuple2;
import com.njzscloud.common.core.tuple.Tuple3; import com.njzscloud.common.core.tuple.Tuple3;
import com.njzscloud.common.core.utils.GroupUtil; import com.njzscloud.common.core.utils.GroupUtil;
@ -45,13 +46,19 @@ public class TianQingStatisticsService implements StatisticsService {
}); });
CompletableFuture<List<GarbageDisposeSummary>> garbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getGarbageDisposeSummary) CompletableFuture<List<GarbageDisposeSummary>> garbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getGarbageDisposeSummary)
.thenApply(list -> { .thenApply(list -> {
Double garbageDisposeSummary_totalWeight = list.stream() Double garbageDisposeSummary_totalWeight_1 = list.stream()
.filter(it -> it.getDepotType() == 1) .filter(it -> it.getDepotType() == 1)
.map(GarbageDisposeSummary::getWeight) .map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D); .reduce(Double::sum).orElse(0D);
Double garbageDisposeSummary_totalWeight_2 = list.stream()
.filter(it -> it.getDepotType() == 2)
.map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D);
for (GarbageDisposeSummary disposeSummary : list) { for (GarbageDisposeSummary disposeSummary : list) {
disposeSummary.setPercentage(garbageDisposeSummary_totalWeight == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight * 100); disposeSummary.setPercentage(disposeSummary.getDepotType() == 1 ?
garbageDisposeSummary_totalWeight_1 == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight_1 * 100 :
garbageDisposeSummary_totalWeight_2 == 0 ? 0 : disposeSummary.getWeight() / garbageDisposeSummary_totalWeight_2 * 100);
} }
return list; return list;
}) })
@ -62,12 +69,22 @@ public class TianQingStatisticsService implements StatisticsService {
CompletableFuture<List<GarbageDisposeSummary>> currentMonthGarbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getCurrentMonthGarbageDisposeSummary) CompletableFuture<List<GarbageDisposeSummary>> currentMonthGarbageDisposeSummary = CompletableFuture.supplyAsync(statisticsMapper::getCurrentMonthGarbageDisposeSummary)
.thenApply(list -> { .thenApply(list -> {
if (list.size() < 6) {
List<String> goodsNames = statisticsMapper.getGoodsNames(Wrappers.query().eq("depot_type", 2), 6 - list.size());
for (String goodsName : goodsNames) {
list.add(new GarbageDisposeSummary()
.setGarbageName(goodsName)
.setWeight(0D));
}
}
Double currentMonthGarbageDisposeSummary_totalWeight = list.stream() Double currentMonthGarbageDisposeSummary_totalWeight = list.stream()
.map(GarbageDisposeSummary::getWeight) .map(GarbageDisposeSummary::getWeight)
.reduce(Double::sum).orElse(0D); .reduce(Double::sum).orElse(0D);
for (GarbageDisposeSummary disposeSummary : list) { for (GarbageDisposeSummary disposeSummary : list) {
disposeSummary.setPercentage(disposeSummary.getWeight() / currentMonthGarbageDisposeSummary_totalWeight * 100); disposeSummary.setPercentage(currentMonthGarbageDisposeSummary_totalWeight == 0 ? 0 :
disposeSummary.getWeight() / currentMonthGarbageDisposeSummary_totalWeight * 100);
} }
return list; return list;
}) })

View File

@ -3,9 +3,9 @@ spring:
multipart: multipart:
location: D:\ProJects\gov_manage\njzscloud-supervisory-svr\logs\temp location: D:\ProJects\gov_manage\njzscloud-supervisory-svr\logs\temp
datasource: datasource:
url: jdbc:mysql://localhost:33061/green_frog?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&allowMultiQueries=true url: jdbc:mysql://localhost:33061/greenfrog?useUnicode=true&characterEncoding=UTF-8&useSSL=false&serverTimezone=Asia/Shanghai&nullCatalogMeansCurrent=true&allowPublicKeyRetrieval=true&allowMultiQueries=true
username: dbard01 username: greenfrog
password: mik9uvNZ password: admin999
security: security:
auth-ignores: /statistics/** auth-ignores: /statistics/**
@ -13,13 +13,13 @@ mybatis-plus:
tunnel: tunnel:
enable: true enable: true
ssh: ssh:
host: 121.43.155.83 host: 47.117.76.168
port: 22 port: 22
user: root user: root
credentials: D:/我的/再昇云/客户信息归档/达州首炬/dzsj.pem credentials: D:/我的/再昇云/客户资料/扬州天勤/tqhost.pem
localPort: 33061 localPort: 33061
db: db:
host: rm-bp1w3397b718u1882.mysql.rds.aliyuncs.com host: 127.0.0.1
port: 3306 port: 3306
app: app:

View File

@ -27,23 +27,25 @@
</select> </select>
<select id="getGarbageDisposeSummary" <select id="getGarbageDisposeSummary"
resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary"> resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary">
SELECT garbage_name, weight, 1 depot_type, '入库' depot_name SELECT garbage_name, weight, icon, 1 depot_type, '入库' depot_name
FROM (SELECT garbage_name, weight FROM (SELECT d.name garbage_name, t.weight, d.icon
FROM (SELECT b.name garbage_name, SUM(a.weight) weight FROM (SELECT b.id, SUM(a.weight) weight
FROM ba_order a FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1 INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1
INNER JOIN ba_goods_category c ON c.id = b.category_id INNER JOIN ba_goods_category c ON c.id = b.category_id
GROUP BY b.name) t GROUP BY b.id) t
INNER JOIN ba_goods d ON d.id = t.id
ORDER BY weight DESC ORDER BY weight DESC
LIMIT 3) t1 LIMIT 3) t1
UNION ALL UNION ALL
SELECT garbage_name, weight, 2 depot_type, '出库' depot_name SELECT garbage_name, weight, icon, 2 depot_type, '出库' depot_name
FROM (SELECT garbage_name, weight FROM (SELECT d.name garbage_name, t.weight, d.icon
FROM (SELECT b.name garbage_name, SUM(a.weight) weight FROM (SELECT b.id, SUM(a.weight) weight
FROM ba_order a FROM ba_order a
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2 INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2
INNER JOIN ba_goods_category c ON c.id = b.category_id INNER JOIN ba_goods_category c ON c.id = b.category_id
GROUP BY b.name) t GROUP BY b.id) t
INNER JOIN ba_goods d ON d.id = t.id
ORDER BY weight DESC ORDER BY weight DESC
LIMIT 3) t2 LIMIT 3) t2
</select> </select>
@ -117,4 +119,12 @@
AND a.out_time >= #{startTime} AND a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime} AND a.out_time <![CDATA[ <= ]]> #{endTime}
</select> </select>
<select id="getGoodsNames" resultType="java.lang.String">
SELECT name
FROM ba_goods
<if test="ew.customSqlSegment != null and ew.customSqlSegment != ''">
${ew.customSqlSegment}
</if>
LIMIT #{count}
</select>
</mapper> </mapper>