diff --git a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java index 622c36e8..0579354c 100644 --- a/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java +++ b/src/main/java/com/qs/serve/modules/tzc/controller/TzcPolicyController.java @@ -76,6 +76,17 @@ public class TzcPolicyController { return R.ok(result.getTableData()); } + /** + * 预览 + * @param id + * @return + */ + @GetMapping("preview2") + public R preview2(Long id){ + TbsBudgetTableVo result = policyApplication.buildResultTable(id); + return R.ok(result); + } + /** * 提交审批 * @param policyId diff --git a/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplication.java b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplication.java index 5a4d7068..c6e8a2ac 100644 --- a/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplication.java +++ b/src/main/java/com/qs/serve/modules/tzc/service/TzcPolicyApplication.java @@ -66,6 +66,8 @@ public class TzcPolicyApplication { private SeeYonService seeYonService; private BmsSupplierService bmsSupplierService; + + /** * 提交申请 * @param policyId @@ -171,6 +173,89 @@ public class TzcPolicyApplication { seeYonService.createCallbackStatus(callbackBo); } + public TbsBudgetTableVo buildResultTable(Long policyId){ + LambdaQueryWrapper policyItemLqw = new LambdaQueryWrapper<>(); + policyItemLqw.eq(TzcPolicyItem::getPolicyId,policyId); + List policyItemList = tzcPolicyItemService.list(policyItemLqw); + + //费用占用 + LambdaQueryWrapper costItemLqw = new LambdaQueryWrapper<>(); + costItemLqw.eq(TbsBudgetCostItemPolicy::getPolicyId,policyId); + List budgetCostItems = tbsBudgetCostItemPolicyService.list(costItemLqw); + + //预算 + List budgetIds = budgetCostItems.stream().map(TbsBudgetCostItemPolicy::getBudgetId) + .distinct().collect(Collectors.toList()); + List budgetList; + if(CollectionUtil.isNotEmpty(budgetIds)){ + budgetList = tbsBudgetMapper.selectBatchIds(budgetIds); + }else { + budgetList = new ArrayList<>(); + } + TbsBudgetTableVo tableVo = new TbsBudgetTableVo(); + List topTheadHeaders = new ArrayList<>(); + Map> tmpMap = budgetCostItems.stream().collect(Collectors.groupingBy(TbsBudgetCostItemPolicy::getScheduleItemBudgetId)); + for (Long scheduleItemBudgetId : tmpMap.keySet()) { + if(scheduleItemBudgetId.equals(0L)){continue;} + TbsBudgetCostItemPolicy budgetCostItem = tmpMap.get(scheduleItemBudgetId).get(0); + String budgetCode = null; + for (TbsBudget budget : budgetList) { + if(budget.getId().equals(budgetCostItem.getBudgetId())){ + budgetCode = budget.getBudgetCode(); + break; + } + } + TbsBudgetTableVo.TopTheadHeader theadHeader = new TbsBudgetTableVo.TopTheadHeader(); + theadHeader.setId(scheduleItemBudgetId+""); + theadHeader.setLabel(budgetCode+"("+budgetCostItem.getScheduleItemName()+")"); + //设置为提交时的金额数据 + theadHeader.setBudgetAmount(budgetCostItem.getScheduleItemAmount() + .subtract(budgetCostItem.getScheduleItemAmountUsed())); + theadHeader.setTotalAmount(budgetCostItem.getScheduleItemAmount()); + BigDecimal applyAmount = budgetCostItem.getScheduleItemAmountApply()==null?BigDecimal.ZERO:budgetCostItem.getScheduleItemAmountApply(); + theadHeader.setCostApplyAmount(applyAmount); + theadHeader.setCostAppliedAmount(budgetCostItem.getScheduleItemAmountUsed().subtract(applyAmount)); + topTheadHeaders.add(theadHeader); + } + //自定义超额预算 + TbsBudgetTableVo.TopTheadHeader overTopHeader = new TbsBudgetTableVo.TopTheadHeader(); + overTopHeader.setId("0"); + overTopHeader.setLabel("其它预算"); + overTopHeader.setBudgetAmount(BigDecimal.ZERO); + topTheadHeaders.add(overTopHeader); + + List leftTheadHeaders = new ArrayList<>(); + + for (TzcPolicyItem policyItem : policyItemList) { + TbsBudgetTableVo.LeftTheadHeader theadHeader = new TbsBudgetTableVo.LeftTheadHeader(); + theadHeader.setActivityCode(policyItem.getPolicyItemCode()); + theadHeader.setId(policyItem.getId()+""); + theadHeader.setSubjectId(policyItem.getSubjectId()); + theadHeader.setSubjectName(policyItem.getSubjectName()); + theadHeader.setCenterId(policyItem.getCenterId()); + theadHeader.setCenterName(policyItem.getCenterName()); + theadHeader.setLabel(policyItem.getPolicyItemCode()); + theadHeader.setLabelCombo(policyItem.getPolicyItemCode()+"-" + +theadHeader.getSubjectName()+"-" + +theadHeader.getCenterName()+"-" + +theadHeader.getLabel()); + leftTheadHeaders.add(theadHeader); + } + + List tableValueList = new ArrayList<>(); + for (TbsBudgetCostItemPolicy costItem : budgetCostItems) { + TbsBudgetTableVo.TableValue tableValue = new TbsBudgetTableVo.TableValue(); + tableValue.setTopId(costItem.getScheduleItemBudgetId()+""); + tableValue.setLeftId(costItem.getPolicyItemId()+""); + tableValue.setValue(costItem.getPolicyItemAmount()); + tableValueList.add(tableValue); + } + tableVo.setTableValueList(tableValueList); + tableVo.setTopTheadHeaderList(topTheadHeaders); + tableVo.setLeftTheadHeaderList(leftTheadHeaders); + return tableVo; + } + public TbsBudgetCostResult buildBudgetCostResult(Long policyId, Boolean throwEx, Boolean buildTableFlag){