智能工厂模块 - 增强工厂数据统计功能
在工厂数据统计功能中,新增百分比计算功能,以增强数据展示的直观性和可理解性。具体包括:1. 在`FactoryDataController`中添加计算全工厂指定日期总数据的逻辑,并计算出入库、出库以及出入库比例的百分比。 2. 修改`FactoryDataMapper`中的SQL查询,确保SUM函数的NULL值处理更加清晰。3. 更新`FactoryDataTotalVO`实体类,添加用于存储百分比的新字段。 这些增强使数据统计结果更加精确和易懂,便于用户快速理解工厂的运营概况。
This commit is contained in:
parent
6cc33737b9
commit
ee2a967d84
@ -29,6 +29,7 @@ import javax.annotation.Resource;
|
||||
import javax.servlet.http.HttpServletResponse;
|
||||
import javax.validation.Valid;
|
||||
import java.io.IOException;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.temporal.TemporalAdjusters;
|
||||
@ -118,12 +119,27 @@ public class FactoryDataController {
|
||||
setDate(pageReqVO);
|
||||
}
|
||||
|
||||
// 获取指定工厂指定日期的出入库数据
|
||||
FactoryDataTotalVO dataTotalVO = dataService.getDataTotal(pageReqVO.getFactoryId(), pageReqVO.getDate());
|
||||
if (dataTotalVO == null) {
|
||||
dataTotalVO = new FactoryDataTotalVO();
|
||||
dataTotalVO.setInTotal(0);
|
||||
dataTotalVO.setOutTotal(0);
|
||||
dataTotalVO.setDamageNum(0);
|
||||
|
||||
if (pageReqVO.getFactoryId() != null) {
|
||||
|
||||
// 获取全工厂指定日期的总数据
|
||||
FactoryDataTotalVO dataTotal = dataService.getDataTotal(null, pageReqVO.getDate());
|
||||
|
||||
DecimalFormat df = new DecimalFormat("#.##"); // 保留两位小数
|
||||
if (dataTotal.getInTotal() != 0) {
|
||||
// 设置出入库比列
|
||||
dataTotalVO.setInPercentage(df.format((double)dataTotalVO.getInTotal() / dataTotal.getInTotal() * 100L) + "%");
|
||||
}
|
||||
if (dataTotal.getOutTotal() != 0) {
|
||||
// 设置出库比例
|
||||
dataTotalVO.setOutPercentage(df.format((double)dataTotalVO.getOutTotal() / dataTotal.getOutTotal() * 100L) + "%");
|
||||
}
|
||||
if (dataTotalVO.getInTotal() != 0 && dataTotalVO.getOutTotal() != 0) {
|
||||
// 设置出入库比列
|
||||
dataTotalVO.setInOutPercentage(df.format((double)dataTotalVO.getOutTotal() / dataTotalVO.getInTotal() * 100L) + "%");
|
||||
}
|
||||
}
|
||||
|
||||
return success(dataTotalVO);
|
||||
|
@ -21,4 +21,13 @@ public class FactoryDataTotalVO {
|
||||
|
||||
@Schema(description = "破损总数")
|
||||
private Integer damageNum;
|
||||
|
||||
@Schema(description = "入库百分比")
|
||||
private String inPercentage;
|
||||
|
||||
@Schema(description = "出库百分比")
|
||||
private String outPercentage;
|
||||
|
||||
@Schema(description = "入库出库百分比")
|
||||
private String inOutPercentage;
|
||||
}
|
||||
|
@ -60,9 +60,9 @@
|
||||
|
||||
<select id="selectDataSum" resultType="cn.iocoder.yudao.module.smartfactory.controller.admin.factorydata.vo.FactoryDataTotalVO">
|
||||
SELECT
|
||||
SUM( CASE WHEN data_type = 2 THEN IFNULL(total_num, 0) END ) AS inTotal,
|
||||
SUM( CASE WHEN data_type = 1 THEN IFNULL(total_num, 0) END ) AS outTotal,
|
||||
SUM( CASE WHEN data_type = 1 OR data_type = 2 THEN IFNULL(damage_num, 0) END ) AS damageNum
|
||||
IFNULL( SUM( CASE WHEN data_type = 2 THEN IFNULL(total_num, 0) END ), 0 ) AS inTotal,
|
||||
IFNULL( SUM( CASE WHEN data_type = 1 THEN IFNULL(total_num, 0) END ), 0 ) AS outTotal,
|
||||
IFNULL( SUM( CASE WHEN data_type = 1 OR data_type = 2 THEN IFNULL(damage_num, 0) END ), 0 ) AS damageNum
|
||||
FROM
|
||||
sf_factory_data
|
||||
WHERE
|
||||
|
Loading…
Reference in New Issue
Block a user