diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java index 8c1d9ebe5..c5d99dc23 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostBudgetServiceImpl.java @@ -7,9 +7,13 @@ import com.baomidou.mybatisplus.core.toolkit.Wrappers; import com.baomidou.mybatisplus.extension.plugins.pagination.Page; import com.zhgd.xmgl.modules.cost.dto.CostBudgetDto; import com.zhgd.xmgl.modules.cost.entity.CostBudget; +import com.zhgd.xmgl.modules.cost.entity.CostContract; +import com.zhgd.xmgl.modules.cost.entity.CostContractPay; import com.zhgd.xmgl.modules.cost.entity.CostSubject; import com.zhgd.xmgl.modules.cost.mapper.CostBudgetMapper; import com.zhgd.xmgl.modules.cost.service.ICostBudgetService; +import com.zhgd.xmgl.modules.cost.service.ICostContractPayService; +import com.zhgd.xmgl.modules.cost.service.ICostContractService; import com.zhgd.xmgl.modules.cost.service.ICostSubjectService; import com.zhgd.xmgl.modules.project.entity.vo.ProjectInfoExtVo; import org.springframework.beans.BeanUtils; @@ -36,6 +40,12 @@ public class CostBudgetServiceImpl extends ServiceImpl tree(QueryWrapper wrapper, ProjectInfoExtVo projectInfoBySn) { wrapper.lambda().eq(CostSubject::getParentId, 0); @@ -49,6 +59,21 @@ public class CostBudgetServiceImpl extends ServiceImpl allDtoList = convert(allList); List budgetList = this.list(Wrappers.lambdaQuery() .eq(CostBudget::getProjectSn, projectInfoBySn.getProjectSn())); + List contractList = costContractService.list(Wrappers.lambdaQuery() + .eq(CostContract::getProjectSn, projectInfoBySn.getProjectSn())); + List costContractPayList = new ArrayList<>(); + if (contractList.size() > 0) { + costContractPayList = costContractPayService.list(Wrappers.lambdaQuery() + .in(CostContractPay::getHtmc, contractList.stream().map(c -> c.getId()).collect(Collectors.toList()))); + } + for (CostBudget costBudget : budgetList) { + List contractIds = contractList.stream().filter(c -> c.getSubjectId().toString().equals(costBudget.getSubjectId().toString())).map(c -> c.getId().toString()).collect(Collectors.toList()); + BigDecimal reduce = costContractPayList.stream().filter(c -> contractIds.contains(c.getHtmc())).map(c -> new BigDecimal(c.getBczfje())) + .reduce(BigDecimal.ZERO, BigDecimal::add); + costBudget.setActualCost(reduce.toString()); + BigDecimal ratio = reduce.subtract(new BigDecimal(costBudget.getBudgetCost())).divide(new BigDecimal(costBudget.getBudgetCost()), 2, BigDecimal.ROUND_HALF_UP); + costBudget.setCostDifference(ratio.multiply(new BigDecimal(100)).toString()); + } getChildren(dtoList, allDtoList, budgetList, true); } return dtoList;