修复空值

master
lzq 2025-09-01 09:44:33 +08:00
parent f568e7551a
commit d69593a949
5 changed files with 53 additions and 11 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;
@ -16,6 +17,8 @@ public interface ShouJuStatisticsMapper {
List<GarbageDisposeSummary> getCurrentMonthGarbageDisposeSummary(); List<GarbageDisposeSummary> getCurrentMonthGarbageDisposeSummary();
List<String> getGoodsNames(@Param("ew") Wrapper<Object> ew, @Param("count") int count);
List<OrderSummary> getOrderSummary(); List<OrderSummary> getOrderSummary();
TodayOrderSummary getTodayOrderSummary(); TodayOrderSummary getTodayOrderSummary();

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;
@ -69,6 +70,17 @@ public class ShouJuStatisticsService 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)
.notLike("name", "青石")
.notLike("name", "矿石")
, 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);

View File

@ -15,6 +15,8 @@
WHERE a.station_id = 1 WHERE a.station_id = 1
AND a.status IN (0, 1, 2, 3) AND a.status IN (0, 1, 2, 3)
AND a.type != 4 AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
ORDER BY a.create_time DESC ORDER BY a.create_time DESC
LIMIT 5) t1 LIMIT 5) t1
UNION ALL UNION ALL
@ -27,6 +29,8 @@
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.station_id = 2 WHERE a.station_id = 2
AND a.type != 4 AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.status IN (0, 1, 2, 3) AND a.status IN (0, 1, 2, 3)
ORDER BY a.create_time DESC ORDER BY a.create_time DESC
LIMIT 5) t2) a LIMIT 5) t2) a
@ -45,7 +49,7 @@
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, 1 depot_type, '入库' depot_name
FROM (SELECT garbage_name, weight FROM (SELECT garbage_name, weight
FROM (SELECT b.name garbage_name, SUM(a.weight) weight FROM (SELECT b.name garbage_name, IFNULL(SUM(a.weight), 0) 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 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 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
@ -60,7 +64,7 @@
UNION ALL UNION ALL
SELECT garbage_name, weight, 2 depot_type, '出库' depot_name SELECT garbage_name, weight, 2 depot_type, '出库' depot_name
FROM (SELECT garbage_name, weight FROM (SELECT garbage_name, weight
FROM (SELECT b.name garbage_name, SUM(a.weight) weight FROM (SELECT b.name garbage_name, IFNULL(SUM(a.weight), 0) 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 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 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
@ -76,11 +80,13 @@
<select id="getCurrentMonthGarbageDisposeSummary" <select id="getCurrentMonthGarbageDisposeSummary"
resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary"> resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary">
SELECT goods_name garbage_name, weight SELECT goods_name garbage_name, weight
FROM (SELECT a.goods_name, SUM(a.weight) weight FROM (SELECT a.goods_name, IFNULL(SUM(a.weight), 0) 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 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 2 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.out_time >= UNIX_TIMESTAMP(DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00')) WHERE a.out_time >= UNIX_TIMESTAMP(DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00'))
AND a.type != 4 AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.out_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH)) AND a.out_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(DATE_FORMAT(CURDATE(), '%Y-%m-01'), INTERVAL 1 MONTH))
GROUP BY a.goods_name) t GROUP BY a.goods_name) t
ORDER BY weight DESC ORDER BY weight DESC
@ -97,6 +103,8 @@
INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status IN (0, 1, 2, 3) WHERE a.status IN (0, 1, 2, 3)
AND a.type != 4 AND a.type != 4
AND c.name NOT LIKE '%青石%'
AND c.name NOT LIKE '%矿石%'
GROUP BY b.id, IF(a.status = 1, 1, 0)) t1 GROUP BY b.id, IF(a.status = 1, 1, 0)) t1
INNER JOIN ba_user t2 ON t2.id = t1.id INNER JOIN ba_user t2 ON t2.id = t1.id
ORDER BY c DESC ORDER BY c DESC
@ -112,6 +120,8 @@
INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods c ON c.id = a.goods_id AND c.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.status IN (0, 1, 2, 3) WHERE a.status IN (0, 1, 2, 3)
AND a.type != 4 AND a.type != 4
AND c.name NOT LIKE '%青石%'
AND c.name NOT LIKE '%矿石%'
GROUP BY b.id, IF(a.status = 1, 1, 0)) t1 GROUP BY b.id, IF(a.status = 1, 1, 0)) t1
INNER JOIN ba_user t2 ON t2.id = t1.id INNER JOIN ba_user t2 ON t2.id = t1.id
ORDER BY c DESC)tt2 ORDER BY c DESC)tt2
@ -127,15 +137,19 @@
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.vip_user = #{userId} WHERE a.vip_user = #{userId}
AND a.type != 4 AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
ORDER BY a.create_time DESC ORDER BY a.create_time DESC
LIMIT 10 LIMIT 10
</select> </select>
<select id="disposeWeight" resultType="java.lang.Double"> <select id="disposeWeight" resultType="java.lang.Double">
SELECT SUM(a.weight) weight SELECT IFNULL(SUM(a.weight), 0) 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 AND b.id NOT IN (287,286,279,278,293,273,271,270,262,2) INNER JOIN ba_goods b ON b.id = a.goods_id AND b.depot_type = 1 AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.out_time >= #{startTime} WHERE a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime} AND a.out_time <![CDATA[ <= ]]> #{endTime}
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.type != 4 AND a.type != 4
</select> </select>
<select id="getTodayOrderSummary" resultType="com.njzscloud.supervisory.statistics.pojo.TodayOrderSummary"> <select id="getTodayOrderSummary" resultType="com.njzscloud.supervisory.statistics.pojo.TodayOrderSummary">
@ -149,6 +163,8 @@
INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2) INNER JOIN ba_goods b ON b.id = a.goods_id AND b.id NOT IN (287, 286, 279, 278, 293, 273, 271, 270, 262, 2)
WHERE a.create_time >= UNIX_TIMESTAMP(CURDATE()) WHERE a.create_time >= UNIX_TIMESTAMP(CURDATE())
AND a.type != 4 AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
AND a.create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))) t AND a.create_time <![CDATA[ < ]]> UNIX_TIMESTAMP(DATE_ADD(CURDATE(), INTERVAL 24 HOUR))) t
GROUP BY order_status) tt GROUP BY order_status) tt
</select> </select>
@ -161,5 +177,16 @@
AND a.out_time >= #{startTime} AND a.out_time >= #{startTime}
AND a.out_time <![CDATA[ <= ]]> #{endTime} AND a.out_time <![CDATA[ <= ]]> #{endTime}
AND a.type != 4 AND a.type != 4
AND b.name NOT LIKE '%青石%'
AND b.name NOT LIKE '%矿石%'
</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> </select>
</mapper> </mapper>

View File

@ -75,7 +75,7 @@
<select id="getRegionSummary" resultType="com.njzscloud.supervisory.statistics.pojo.RegionSummary"> <select id="getRegionSummary" resultType="com.njzscloud.supervisory.statistics.pojo.RegionSummary">
SELECT a.address, SELECT a.address,
SUM(a.weight) total_weight IFNULL(SUM(a.weight), 0) total_weight
FROM ba_order a FROM ba_order a
INNER JOIN ba_order_dispatch b ON b.order_no = a.order_no INNER JOIN ba_order_dispatch b ON b.order_no = a.order_no
WHERE a.status = 1 WHERE a.status = 1
@ -84,7 +84,7 @@
<select id="getCompanySummary" resultType="com.njzscloud.supervisory.statistics.pojo.CompanySummary"> <select id="getCompanySummary" resultType="com.njzscloud.supervisory.statistics.pojo.CompanySummary">
SELECT t1.total_weight, t2.company SELECT t1.total_weight, t2.company
FROM (SELECT SUM(a.weight) total_weight, b.transport_uid FROM (SELECT IFNULL(SUM(a.weight), 0) total_weight, b.transport_uid
FROM ba_order a FROM ba_order a
INNER JOIN ba_order_dispatch b ON b.order_no = a.order_no INNER JOIN ba_order_dispatch b ON b.order_no = a.order_no
WHERE a.status = 1 WHERE a.status = 1

View File

@ -29,7 +29,7 @@
resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary"> resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary">
SELECT garbage_name, weight, icon, 1 depot_type, '入库' depot_name SELECT garbage_name, weight, icon, 1 depot_type, '入库' depot_name
FROM (SELECT d.name garbage_name, t.weight, d.icon FROM (SELECT d.name garbage_name, t.weight, d.icon
FROM (SELECT b.id, SUM(a.weight) weight FROM (SELECT b.id, IFNULL(SUM(a.weight), 0) 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
@ -40,7 +40,7 @@
UNION ALL UNION ALL
SELECT garbage_name, weight, icon, 2 depot_type, '出库' depot_name SELECT garbage_name, weight, icon, 2 depot_type, '出库' depot_name
FROM (SELECT d.name garbage_name, t.weight, d.icon FROM (SELECT d.name garbage_name, t.weight, d.icon
FROM (SELECT b.id, SUM(a.weight) weight FROM (SELECT b.id, IFNULL(SUM(a.weight), 0) 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
@ -53,7 +53,7 @@
<select id="getCurrentMonthGarbageDisposeSummary" <select id="getCurrentMonthGarbageDisposeSummary"
resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary"> resultType="com.njzscloud.supervisory.statistics.pojo.GarbageDisposeSummary">
SELECT goods_name garbage_name, weight SELECT goods_name garbage_name, weight
FROM (SELECT a.goods_name, SUM(a.weight) weight FROM (SELECT a.goods_name, IFNULL(SUM(a.weight), 0) 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
WHERE a.out_time >= UNIX_TIMESTAMP(DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00')) WHERE a.out_time >= UNIX_TIMESTAMP(DATE_FORMAT(CURDATE(), '%Y-%m-01 00:00:00'))
@ -91,7 +91,7 @@
LIMIT 10 LIMIT 10
</select> </select>
<select id="disposeWeight" resultType="java.lang.Double"> <select id="disposeWeight" resultType="java.lang.Double">
SELECT SUM(a.weight) weight SELECT IFNULL(SUM(a.weight), 0) 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
WHERE a.out_time >= #{startTime} WHERE a.out_time >= #{startTime}