From 724f8ec3bbcf9da50f304f57d8bc9a60ad75ad0a Mon Sep 17 00:00:00 2001 From: lyh <925863403@qq.com> Date: 星期三, 27 八月 2025 18:29:32 +0800 Subject: [PATCH] 修改计算百分比位置 --- lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java | 19 +++++++++ lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml | 75 ++++++++++++++----------------------- 2 files changed, 48 insertions(+), 46 deletions(-) diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml index b32141a..b407bb0 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/mapper/xml/EamEquipmentMapper.xml @@ -78,51 +78,34 @@ ${ew.customSqlSegment} </select> <select id="echartsList" resultType="org.jeecg.modules.eam.dto.EchartsDto"> - SELECT COUNT - ( t.technology_status ) AS "value", - item.item_text AS "name", - item.item_value AS "code", - ( SELECT COUNT ( a.id ) FROM eam_equipment_extend a WHERE a.technology_status IS NOT NULL - <if test="ids != null and ids != ''"> - AND a.id IN - <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> - #{id} - </foreach> - </if> - ) AS "total", - concat ( - round( - ISNULL ( - COUNT ( t.id ) / ( SELECT COUNT ( a.id ) FROM eam_equipment_extend a WHERE a.technology_status IS NOT NULL - <if test="ids != null and ids != ''"> - AND a.id IN - <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> - #{id} - </foreach> - </if>), - 0 - ) * 100, - 2 - ), - '%' - ) AS "percentage" - FROM - sys_dict c - LEFT JOIN sys_dict_item item ON c.id = item.dict_id - LEFT JOIN eam_equipment_extend t ON t.technology_status = item.item_value - <if test="ids != null and ids != ''"> - AND t.id IN - <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> - #{id} - </foreach> - </if> - WHERE - c.dict_code = 'equipment_technology_status' - GROUP BY - item.item_text, - t.technology_status, - item.item_value - ORDER BY - item.item_value + WITH TotalCount AS ( + SELECT COUNT(a.id) AS total_count + FROM eam_equipment_extend a + WHERE a.technology_status IS NOT NULL + <if test="ids != null and ids != ''"> + AND a.id IN + <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + </if> + ) + SELECT + COUNT(t.technology_status) AS "value", + item.item_text AS "name", + item.item_value AS "code", + tc.total_count AS "total" + FROM sys_dict c + LEFT JOIN sys_dict_item item ON c.id = item.dict_id + LEFT JOIN eam_equipment_extend t ON t.technology_status = item.item_value + <if test="ids != null and ids != ''"> + AND t.id IN + <foreach collection="ids" item="id" index="index" open="(" close=")" separator=","> + #{id} + </foreach> + </if> + CROSS JOIN TotalCount tc + WHERE c.dict_code = 'equipment_technology_status' + GROUP BY item.item_text, item.item_value, tc.total_count + ORDER BY item.item_value </select> </mapper> diff --git a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java index b8120de..00ce4ee 100644 --- a/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java +++ b/lxzn-module-eam-common/src/main/java/org/jeecg/modules/eam/service/impl/EamEquipmentServiceImpl.java @@ -38,6 +38,9 @@ import org.springframework.transaction.annotation.Transactional; import javax.annotation.Resource; +import java.math.BigDecimal; +import java.math.RoundingMode; +import java.text.DecimalFormat; import java.util.*; import java.util.stream.Collectors; @@ -460,6 +463,22 @@ } List<String> ids=this.baseMapper.queryList(queryWrapper).stream().map(EamEquipment::getId).collect(Collectors.toList()); echartsDtoList= this.baseMapper.echartsList(ids); + // 鐩存帴浣跨敤for寰幆澶勭悊鏁版嵁 + for (EchartsDto dto : echartsDtoList) { + if (dto.getTotal() != null && !"0".equals(dto.getTotal())) { + try { + int value = Integer.parseInt(dto.getValue()); + int total = Integer.parseInt(dto.getTotal()); + double percentage = (value * 100.0) / total; + DecimalFormat df = new DecimalFormat("0.00"); + dto.setPercentage(df.format(percentage) + "%"); + } catch (NumberFormatException e) { + dto.setPercentage("0.00%"); + } + } else { + dto.setPercentage("0.00%"); + } + } return echartsDtoList; } -- Gitblit v1.9.3