diff --git a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaCostServiceImpl.java b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaCostServiceImpl.java index 2e8fccf..09d9168 100644 --- a/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaCostServiceImpl.java +++ b/ruoyi-oa/src/main/java/com/ruoyi/oa/service/impl/SysOaCostServiceImpl.java @@ -23,6 +23,7 @@ import com.ruoyi.oa.domain.SysOaCost; import com.ruoyi.oa.service.ISysOaCostService; import java.util.*; +import java.util.stream.Collectors; /** * 项目成本分析Service业务层处理 @@ -169,10 +170,41 @@ public class SysOaCostServiceImpl implements ISysOaCostService { } else if (allVo.getCostType() == 5) { // 接待 }} - // 往vos里面加 allVos.add(allVo); + } - return TableDataInfo.build(allVos); + +// 假设原始数据列表为 allVos + List resVos = allVos.stream() + .collect(Collectors.groupingBy(SysOaCostAllVo::getProjectId)) + .values().stream() + .map(group -> { + Double userCostSum = group.stream().mapToDouble(x -> Optional.ofNullable((Double)x.getUserCost()).orElse(0.0)).sum(); + + Double claimCostSum = group.stream().mapToDouble(x -> Optional.ofNullable((Double)x.getUserCost()).orElse(0.0)).sum(); + Double materialCostSum = group.stream().mapToDouble(x -> Optional.ofNullable((Double)x.getUserCost()).orElse(0.0)).sum(); + Double totalCost = userCostSum + claimCostSum + materialCostSum; + + return new SysOaCostAllVo( + group.get(0).getProjectId(), + group.get(0).getProjectName(), + totalCost, + null, + "汇总数据", // 备注 + null, + null, // materialId + materialCostSum, + null, // userId + userCostSum, + null, // claimId + claimCostSum, + null// financeId + ); + }) + .collect(Collectors.toList()); + + + return TableDataInfo.build(resVos); } /**