删除多余数据看板Vo

This commit is contained in:
2025-07-31 09:40:38 +08:00
parent b74c977c60
commit bee31ca5bc
8 changed files with 91 additions and 145 deletions

View File

@@ -1,8 +0,0 @@
package com.klp.domain.vo;
import lombok.Data;
@Data
public class CustomerRegionVO {
private String region;
private int customerCount;
}

View File

@@ -12,30 +12,30 @@ import java.util.List;
@Data @Data
public class DashboardOverviewVO { public class DashboardOverviewVO {
/** // /**
* 订单汇总 // * 订单汇总
*/ // */
private OrderSummaryVO orderSummary; // private OrderSummaryVO orderSummary;
//
/** // /**
* 销售经理饼图 // * 销售经理饼图
*/ // */
private List<SalesManagerPieVO> salesManagerPie; // private List<SalesManagerPieVO> salesManagerPie;
//
/** // /**
* 产品销量排行 // * 产品销量排行
*/ // */
private List<ProductRankVO> productRank; // private List<ProductRankVO> productRank;
//
/** // /**
* 订单物料分析 // * 订单物料分析
*/ // */
private List<OrderMaterialVO> orderMaterial; // private List<OrderMaterialVO> orderMaterial;
//
/** // /**
* 客户分布 // * 客户分布
*/ // */
private List<CustomerRegionVO> customerRegion; // private List<CustomerRegionVO> customerRegion;
// ========== 新增业务区域 ========== // ========== 新增业务区域 ==========

View File

@@ -1,10 +0,0 @@
package com.klp.domain.vo;
import lombok.Data;
@Data
public class OrderMaterialVO {
private String materialName;
private double usedCount;
private double stockCount;
private double purchaseCycle;
}

View File

@@ -1,19 +0,0 @@
package com.klp.domain.vo;
import lombok.Data;
@Data
public class OrderSummaryVO {
private int totalOrderCount;
private int finishedOrderCount;
private double finishedRate;
private int monthFinishedOrderCount;
private double monthFinishedRate;
private int lastMonthTotalOrderCount;
private int lastMonthFinishedOrderCount;
private double lastMonthFinishedRate;
private double totalOrderCountGrowthRate;
private double finishedOrderCountGrowthRate;
private double finishedRateGrowthRate;
private double monthFinishedOrderCountGrowthRate;
private double monthFinishedRateGrowthRate;
}

View File

@@ -1,8 +0,0 @@
package com.klp.domain.vo;
import lombok.Data;
@Data
public class ProductRankVO {
private String productName;
private double totalSales;
}

View File

@@ -1,8 +0,0 @@
package com.klp.domain.vo;
import lombok.Data;
@Data
public class SalesManagerPieVO {
private String salesManager;
private double totalSales;
}

View File

@@ -14,43 +14,43 @@ import java.util.List;
* @date 2025-07-18 * @date 2025-07-18
*/ */
public interface WmsProductMapper extends BaseMapperPlus<WmsProductMapper, WmsProduct, WmsProductVo> { public interface WmsProductMapper extends BaseMapperPlus<WmsProductMapper, WmsProduct, WmsProductVo> {
// 订单汇总 // // 订单汇总
@Select("SELECT " + // @Select("SELECT " +
"COUNT(*) AS totalOrderCount, " + // "COUNT(*) AS totalOrderCount, " +
"SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END) AS finishedOrderCount, " + // "SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END) AS finishedOrderCount, " +
"ROUND(SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END)/COUNT(*), 4) AS finishedRate, " + // "ROUND(SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END)/COUNT(*), 4) AS finishedRate, " +
"SUM(CASE WHEN order_status=2 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(NOW(), '%Y-%m') THEN 1 ELSE 0 END) AS monthFinishedOrderCount, " + // "SUM(CASE WHEN order_status=2 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(NOW(), '%Y-%m') THEN 1 ELSE 0 END) AS monthFinishedOrderCount, " +
"ROUND(SUM(CASE WHEN order_status=2 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(NOW(), '%Y-%m') THEN 1 ELSE 0 END)/COUNT(*), 4) AS monthFinishedRate, " + // "ROUND(SUM(CASE WHEN order_status=2 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(NOW(), '%Y-%m') THEN 1 ELSE 0 END)/COUNT(*), 4) AS monthFinishedRate, " +
"(SELECT COUNT(*) FROM wms_order WHERE del_flag=0 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')) AS lastMonthTotalOrderCount, " + // "(SELECT COUNT(*) FROM wms_order WHERE del_flag=0 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')) AS lastMonthTotalOrderCount, " +
"(SELECT SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END) FROM wms_order WHERE del_flag=0 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')) AS lastMonthFinishedOrderCount, " + // "(SELECT SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END) FROM wms_order WHERE del_flag=0 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')) AS lastMonthFinishedOrderCount, " +
"(SELECT ROUND(SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END)/COUNT(*), 4) FROM wms_order WHERE del_flag=0 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')) AS lastMonthFinishedRate " + // "(SELECT ROUND(SUM(CASE WHEN order_status=2 THEN 1 ELSE 0 END)/COUNT(*), 4) FROM wms_order WHERE del_flag=0 AND DATE_FORMAT(create_time, '%Y-%m')=DATE_FORMAT(DATE_SUB(NOW(), INTERVAL 1 MONTH), '%Y-%m')) AS lastMonthFinishedRate " +
"FROM wms_order WHERE del_flag=0") // "FROM wms_order WHERE del_flag=0")
OrderSummaryVO selectOrderSummary(); // OrderSummaryVO selectOrderSummary();
//
// 销售经理饼图 // // 销售经理饼图
@Select("SELECT sales_manager, SUM(od.quantity) AS totalSales " + // @Select("SELECT sales_manager, SUM(od.quantity) AS totalSales " +
"FROM wms_order o JOIN wms_order_detail od ON o.order_id = od.order_id " + // "FROM wms_order o JOIN wms_order_detail od ON o.order_id = od.order_id " +
"WHERE o.order_status = 2 AND o.del_flag=0 GROUP BY o.sales_manager") // "WHERE o.order_status = 2 AND o.del_flag=0 GROUP BY o.sales_manager")
List<SalesManagerPieVO> selectSalesManagerPie(); // List<SalesManagerPieVO> selectSalesManagerPie();
//
// 产品销量排行 // // 产品销量排行
@Select("SELECT p.product_name, SUM(od.quantity) AS totalSales " + // @Select("SELECT p.product_name, SUM(od.quantity) AS totalSales " +
"FROM wms_order_detail od JOIN wms_product p ON od.product_id = p.product_id " + // "FROM wms_order_detail od JOIN wms_product p ON od.product_id = p.product_id " +
"GROUP BY p.product_name ORDER BY totalSales DESC LIMIT 10") // "GROUP BY p.product_name ORDER BY totalSales DESC LIMIT 10")
List<ProductRankVO> selectProductRank(); // List<ProductRankVO> selectProductRank();
//
// 订单物料分析(只分析库存量和销售销量) // // 订单物料分析(只分析库存量和销售销量)
@Select("SELECT p.product_name AS materialName, SUM(od.quantity) AS usedCount, " + // @Select("SELECT p.product_name AS materialName, SUM(od.quantity) AS usedCount, " +
"(SELECT IFNULL(SUM(quantity),0) FROM wms_stock s WHERE s.item_type='product' AND s.item_id = p.product_id AND s.del_flag=0) AS stockCount, " + // "(SELECT IFNULL(SUM(quantity),0) FROM wms_stock s WHERE s.item_type='product' AND s.item_id = p.product_id AND s.del_flag=0) AS stockCount, " +
"0 AS purchaseCycle " + // "0 AS purchaseCycle " +
"FROM wms_order_detail od JOIN wms_product p ON od.product_id = p.product_id " + // "FROM wms_order_detail od JOIN wms_product p ON od.product_id = p.product_id " +
"GROUP BY p.product_id, p.product_name") // "GROUP BY p.product_id, p.product_name")
List<OrderMaterialVO> selectOrderMaterial(); // List<OrderMaterialVO> selectOrderMaterial();
//
// 客户分布热力图 // // 客户分布热力图
@Select("SELECT o.customer_name AS region, COUNT(*) AS customerCount " + // @Select("SELECT o.customer_name AS region, COUNT(*) AS customerCount " +
"FROM wms_order o WHERE o.del_flag=0 GROUP BY o.customer_name") // "FROM wms_order o WHERE o.del_flag=0 GROUP BY o.customer_name")
List<CustomerRegionVO> selectCustomerRegion(); // List<CustomerRegionVO> selectCustomerRegion();
// ========== 新增业务区域查询方法 ========== // ========== 新增业务区域查询方法 ==========

View File

@@ -15,7 +15,6 @@ import com.klp.domain.vo.WmsProductVo;
import com.klp.domain.WmsProduct; import com.klp.domain.WmsProduct;
import com.klp.mapper.WmsProductMapper; import com.klp.mapper.WmsProductMapper;
import com.klp.service.IWmsProductService; import com.klp.service.IWmsProductService;
import com.klp.domain.vo.OrderSummaryVO;
import com.klp.domain.vo.PerformanceAreaVO; import com.klp.domain.vo.PerformanceAreaVO;
import com.klp.domain.vo.CurrentSituationAreaVO; import com.klp.domain.vo.CurrentSituationAreaVO;
import com.klp.domain.vo.RecommendationAreaVO; import com.klp.domain.vo.RecommendationAreaVO;
@@ -126,38 +125,38 @@ public class WmsProductServiceImpl implements IWmsProductService {
@Override @Override
public DashboardOverviewVO getDashboardOverview() { public DashboardOverviewVO getDashboardOverview() {
DashboardOverviewVO vo = new DashboardOverviewVO(); DashboardOverviewVO vo = new DashboardOverviewVO();
// ========== 原有业务逻辑 ========== // // ========== 原有业务逻辑 ==========
OrderSummaryVO summary = baseMapper.selectOrderSummary(); // OrderSummaryVO summary = baseMapper.selectOrderSummary();
// 计算增长率 // // 计算增长率
summary.setTotalOrderCountGrowthRate( // summary.setTotalOrderCountGrowthRate(
summary.getLastMonthTotalOrderCount() == 0 ? 0 : // summary.getLastMonthTotalOrderCount() == 0 ? 0 :
(double)(summary.getTotalOrderCount() - summary.getLastMonthTotalOrderCount()) / summary.getLastMonthTotalOrderCount() // (double)(summary.getTotalOrderCount() - summary.getLastMonthTotalOrderCount()) / summary.getLastMonthTotalOrderCount()
); // );
summary.setFinishedOrderCountGrowthRate( // summary.setFinishedOrderCountGrowthRate(
summary.getLastMonthFinishedOrderCount() == 0 ? 0 : // summary.getLastMonthFinishedOrderCount() == 0 ? 0 :
(double)(summary.getFinishedOrderCount() - summary.getLastMonthFinishedOrderCount()) / summary.getLastMonthFinishedOrderCount() // (double)(summary.getFinishedOrderCount() - summary.getLastMonthFinishedOrderCount()) / summary.getLastMonthFinishedOrderCount()
); // );
summary.setFinishedRateGrowthRate( // summary.setFinishedRateGrowthRate(
summary.getLastMonthFinishedRate() == 0 ? 0 : // summary.getLastMonthFinishedRate() == 0 ? 0 :
(summary.getFinishedRate() - summary.getLastMonthFinishedRate()) / summary.getLastMonthFinishedRate() // (summary.getFinishedRate() - summary.getLastMonthFinishedRate()) / summary.getLastMonthFinishedRate()
); // );
summary.setMonthFinishedOrderCountGrowthRate( // summary.setMonthFinishedOrderCountGrowthRate(
summary.getLastMonthFinishedOrderCount() == 0 ? 0 : // summary.getLastMonthFinishedOrderCount() == 0 ? 0 :
(double)(summary.getMonthFinishedOrderCount() - summary.getLastMonthFinishedOrderCount()) / summary.getLastMonthFinishedOrderCount() // (double)(summary.getMonthFinishedOrderCount() - summary.getLastMonthFinishedOrderCount()) / summary.getLastMonthFinishedOrderCount()
); // );
summary.setMonthFinishedRateGrowthRate( // summary.setMonthFinishedRateGrowthRate(
summary.getLastMonthFinishedRate() == 0 ? 0 : // summary.getLastMonthFinishedRate() == 0 ? 0 :
(summary.getMonthFinishedRate() - summary.getLastMonthFinishedRate()) / summary.getLastMonthFinishedRate() // (summary.getMonthFinishedRate() - summary.getLastMonthFinishedRate()) / summary.getLastMonthFinishedRate()
); // );
vo.setOrderSummary(summary); // vo.setOrderSummary(summary);
vo.setSalesManagerPie(baseMapper.selectSalesManagerPie()); // vo.setSalesManagerPie(baseMapper.selectSalesManagerPie());
vo.setProductRank(baseMapper.selectProductRank()); // vo.setProductRank(baseMapper.selectProductRank());
vo.setOrderMaterial(baseMapper.selectOrderMaterial()); // vo.setOrderMaterial(baseMapper.selectOrderMaterial());
vo.setCustomerRegion(baseMapper.selectCustomerRegion()); // vo.setCustomerRegion(baseMapper.selectCustomerRegion());
// ========== 新增业务区域逻辑 ========== // ========== 新增业务区域逻辑 ==========
// 业绩区数据 // 业绩区数据
PerformanceAreaVO performanceArea = new PerformanceAreaVO(); PerformanceAreaVO performanceArea = new PerformanceAreaVO();
performanceArea.setProductSalesPerformance(baseMapper.selectProductSalesPerformance()); performanceArea.setProductSalesPerformance(baseMapper.selectProductSalesPerformance());