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 838152468..240a0866d 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 @@ -53,7 +53,9 @@ public class CostBudgetServiceImpl extends ServiceImpl total = list.stream().filter(l -> StringUtils.isBlank(l.getName())).collect(Collectors.toList()); dtoList.addAll(convert(total)); if (dtoList.size() > 0) { - List allList = costSubjectService.list(); + List allList = costSubjectService.list(Wrappers.lambdaQuery() + .eq(CostSubject::getSn, projectSn) + .eq(CostSubject::getLevelType, 3)); List allDtoList = convert(allList); List budgetList = this.list(Wrappers.lambdaQuery() .eq(CostBudget::getProjectSn, projectSn) @@ -66,13 +68,25 @@ public class CostBudgetServiceImpl extends ServiceImpl 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()); - if (!costBudget.getActualCost().equals("0")) { - 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()); + List children = allList.stream().filter(a -> a.getParentId().toString().equals(costBudget.getSubjectId().toString())).collect(Collectors.toList()); + if (children.size() > 0) { + List contractIds = contractList.stream().filter(c -> children.stream().map(d -> d.getId().toString()).collect(Collectors.toList()).contains(c.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()); + if (!costBudget.getActualCost().equals("0")) { + 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()); + } + } else { + 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()); + if (!costBudget.getActualCost().equals("0")) { + 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); diff --git a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java index 2bcdf1823..b9f9102a5 100644 --- a/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/cost/service/impl/CostContractPlanServiceImpl.java @@ -196,18 +196,32 @@ public class CostContractPlanServiceImpl extends ServiceImpl children = allList.stream().filter(a -> a.getParentId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); -// List allChildren = allList.stream().filter(a -> Arrays.asList(a.getAncestors().split(",")).contains(costSubject.getId().toString())).collect(Collectors.toList()); - List contracts = contractList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); - dynamicCostDto.setGoal(costBudgetList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())) - .map(c -> new BigDecimal(c.getBudgetCost())).reduce(BigDecimal.ZERO, BigDecimal::add)); - dynamicCostDto.setContractAmount(contracts.stream().filter(c -> c.getZt().equals("已生效")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); - dynamicCostDto.setUnderApproval(contracts.stream().filter(c -> c.getZt().equals("内审中")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); - dynamicCostDto.setDynamicCost(dynamicCostDto.getContractAmount().add(dynamicCostDto.getUnderApproval()).add(dynamicCostDto.getToOccur()).add(dynamicCostDto.getContractAmount())); - BigDecimal subtract = dynamicCostDto.getGoal().subtract(dynamicCostDto.getDynamicCost()); - dynamicCostDto.setCostDifference(dynamicCostDto.getGoal().compareTo(new BigDecimal(0)) > 0 ? subtract.divide(dynamicCostDto.getGoal(), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).toString() : "0"); - dynamicCostDto.setAllowance(subtract); + if (children.size() > 0) { + List stringList = children.stream().map(d -> d.getId().toString()).collect(Collectors.toList()); + List contracts = contractList.stream().filter(c -> stringList.contains(c.getSubjectId().toString())).collect(Collectors.toList()); + dynamicCostDto.setGoal(costBudgetList.stream().filter(c -> stringList.contains(c.getSubjectId().toString())) + .map(c -> new BigDecimal(c.getBudgetCost())).reduce(BigDecimal.ZERO, BigDecimal::add)); + dynamicCostDto.setContractAmount(contracts.stream().filter(c -> c.getZt().equals("已生效")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); + dynamicCostDto.setUnderApproval(contracts.stream().filter(c -> c.getZt().equals("内审中")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); + dynamicCostDto.setDynamicCost(dynamicCostDto.getContractAmount().add(dynamicCostDto.getUnderApproval()).add(dynamicCostDto.getToOccur()).add(dynamicCostDto.getContractAmount())); + BigDecimal subtract = dynamicCostDto.getGoal().subtract(dynamicCostDto.getDynamicCost()); + dynamicCostDto.setCostDifference(dynamicCostDto.getGoal().compareTo(new BigDecimal(0)) > 0 ? subtract.divide(dynamicCostDto.getGoal(), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).toString() : "0"); + dynamicCostDto.setAllowance(subtract); + } else { + List contracts = contractList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())).collect(Collectors.toList()); + dynamicCostDto.setGoal(costBudgetList.stream().filter(c -> c.getSubjectId().toString().equals(costSubject.getId().toString())) + .map(c -> new BigDecimal(c.getBudgetCost())).reduce(BigDecimal.ZERO, BigDecimal::add)); + dynamicCostDto.setContractAmount(contracts.stream().filter(c -> c.getZt().equals("已生效")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); + dynamicCostDto.setUnderApproval(contracts.stream().filter(c -> c.getZt().equals("内审中")).map(c -> c.getHthszj()).reduce(BigDecimal.ZERO, BigDecimal::add)); + dynamicCostDto.setDynamicCost(dynamicCostDto.getContractAmount().add(dynamicCostDto.getUnderApproval()).add(dynamicCostDto.getToOccur()).add(dynamicCostDto.getContractAmount())); + BigDecimal subtract = dynamicCostDto.getGoal().subtract(dynamicCostDto.getDynamicCost()); + dynamicCostDto.setCostDifference(dynamicCostDto.getGoal().compareTo(new BigDecimal(0)) > 0 ? subtract.divide(dynamicCostDto.getGoal(), 2, BigDecimal.ROUND_HALF_UP).multiply(new BigDecimal(100)).toString() : "0"); + dynamicCostDto.setAllowance(subtract); + } + // List allChildren = allList.stream().filter(a -> Arrays.asList(a.getAncestors().split(",")).contains(costSubject.getId().toString())).collect(Collectors.toList()); dynamicCostDto.setChildren(getDynamicChildren(children, allList, costBudgetList, contractList)); dynamicCostDtoList.add(dynamicCostDto); } diff --git a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProgressPanoramaNodePlanServiceImpl.java b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProgressPanoramaNodePlanServiceImpl.java index 04e901f44..77f28e618 100644 --- a/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProgressPanoramaNodePlanServiceImpl.java +++ b/src/main/java/com/zhgd/xmgl/modules/project/service/impl/ProgressPanoramaNodePlanServiceImpl.java @@ -28,6 +28,7 @@ import com.zhgd.xmgl.modules.project.mapper.ProjectMapper; import com.zhgd.xmgl.modules.project.service.*; import com.zhgd.xmgl.security.entity.UserInfo; import com.zhgd.xmgl.security.util.SecurityUtils; +import com.zhgd.xmgl.util.JiuzhuDateUtil; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang3.StringUtils; import org.springframework.beans.BeanUtils; @@ -63,6 +64,9 @@ public class ProgressPanoramaNodePlanServiceImpl extends ServiceImpl sendPlan(ProgressPanoramaNodePlan progressPanoramaNodePlan) { + String url = "/api/cube/restful/interface/getModeDataPageList/JHRW"; + String systemid = "JHTS"; + String d_password = "F510A75A00ED495389C685792E416269"; + JSONObject mainTable = convert(progressPanoramaNodePlan); + String result = doAction(url, systemid, d_password, mainTable); + List planTargetDtoList = new ArrayList<>(); + if (StringUtils.isNotBlank(result)) { + JSONObject obj = JSONObject.parseObject(result); + System.out.println("推送任务结果======" + obj); + } + return planTargetDtoList; + } + + private JSONObject convert(ProgressPanoramaNodePlan progressPanoramaNodePlan) { + JSONObject main = new JSONObject(); + main.put("id", progressPanoramaNodePlan.getId()); + main.put("rwlx", progressPanoramaNodePlan.getLevelName()); + main.put("rwlb", progressPanoramaNodePlan.getType()); + main.put("sfwgjjd", progressPanoramaNodePlan.getKeyNode()); + main.put("sfwlcb", progressPanoramaNodePlan.getMilepostNode()); + main.put("jhksrq", progressPanoramaNodePlan.getPlanStartDate()); + main.put("jhjsrq", progressPanoramaNodePlan.getPlanFinishDate()); + main.put("zzr", progressPanoramaNodePlan.getChargerId()); + main.put("zzbm", progressPanoramaNodePlan.getChargerDeptId()); + main.put("lcb", progressPanoramaNodePlan.getMilepostId()); + main.put("jdxcg", progressPanoramaNodePlan.getResultId()); + main.put("bh", progressPanoramaNodePlan.getNodeCode()); + main.put("gq", progressPanoramaNodePlan.getDuration()); + main.put("xzr", progressPanoramaNodePlan.getAssistId()); + return main; + } + /** *restful接口调用案例 *以getModeDataPageList为例