diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java index 6d0cb72a..2d10d90d 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java @@ -15,8 +15,10 @@ import com.qs.serve.modules.tbs.common.TbsBudgetCheckState; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.bo.*; +import com.qs.serve.modules.tbs.entity.dto.TbsBudgetLogWithAmount; import com.qs.serve.modules.tbs.entity.vo.TbsBudgetVo; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; +import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper; import com.qs.serve.modules.tbs.service.*; import lombok.AllArgsConstructor; import lombok.extern.slf4j.Slf4j; @@ -49,8 +51,11 @@ public class TbsBudgetController { private final TbsBudgetLogService tbsBudgetLogService; private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService; private final TbsBudgetChangeService tbsBudgetChangeService; + private final TbsBudgetConditionService tbsBudgetConditionService; + private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; private final SysUserService sysUserService; + /** * 列表 * @param param @@ -67,6 +72,44 @@ public class TbsBudgetController { return R.ok(); } + /** + * 导出 + * @param param + * @return + */ + @GetMapping("/list4Export") + @PreAuthorize("hasRole('tbs:budget:query')") + public R> list4Export(TbsBudgetSo param){ + List budgetIds = tbsBudgetMapper.selectBudgetId(param); + if(budgetIds.size()>0){ + List list = tbsBudgetService.listByIds(budgetIds); + for (TbsBudget budget : list) { + List conditionList = tbsBudgetConditionService + .list(new LambdaQueryWrapper() + .eq(TbsBudgetCondition::getBudgetId, budget.getId())); + List scheduleItemBudgetList = tbsScheduleItemBudgetService + .list(new LambdaQueryWrapper() + .eq(TbsScheduleItemBudget::getBudgetId, budget.getId())); + List scheduleItemBudgetIds = scheduleItemBudgetList.stream() + .map(TbsScheduleItemBudget::getId).collect(Collectors.toList()); + //实际发布预算 + List budgetLogWithAmountList = tbsScheduleItemBudgetMapper.getAllByScheduleItemIdList(scheduleItemBudgetIds); + for (TbsScheduleItemBudget itemBudget : scheduleItemBudgetList) { + for (TbsBudgetLogWithAmount withAmount : budgetLogWithAmountList) { + if (itemBudget.getId().equals(withAmount.getId())){ + itemBudget.setBudgetAmount(withAmount.getAmt()); + break; + } + } + } + budget.setBudgetConditionList(conditionList); + budget.setBudgetScheduleItemList(scheduleItemBudgetList); + } + return R.ok(list); + } + return R.ok(); + } + /** * 列表(通过IDS查询) * @apiNote 用于加载模板选中的预算 diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java index e0d7696f..6db07405 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java @@ -155,10 +155,14 @@ public class TbsBudget implements Serializable { @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR) private String[] attachIds; - /** 后端传输dto */ + /** 预算条件 */ @TableField(exist = false) private List budgetConditionList; + /** 预算金额 */ + @TableField(exist = false) + private List budgetScheduleItemList; + @TableField(exist = false) private List attachList; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java index 0db3b367..2f616f00 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java @@ -51,7 +51,9 @@ public class TbsBudgetBatchOperationServiceImpl implements SeeYonOperationServic public Object doFinished(TbsAffairCommitBo param) { TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); List budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); + for (TbsBudgetBatchItem batchItem : budgetBatchItemList) { + } return null; } diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java index 8fcfc705..52fe5c3c 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java @@ -66,6 +66,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl batchItems = new ArrayList<>(); //加载 周期信息 @@ -195,56 +195,31 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl existingConditionList = tbsBudgetConditionService - .list(new LambdaQueryWrapper() - .eq(TbsBudgetCondition::getBudgetId,budgetId)); - String bandNames = paramItem.getBandNames(); - String categoryNames = paramItem.getCategoryNames(); - String seriesNames = paramItem.getSeriesNames(); - //设置changeConditionList参数 - List changeConditionList = new ArrayList<>(); - this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, - bandNames, TbsGoodsType.brand.name()); - this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, - categoryNames, TbsGoodsType.category.name()); - this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, - seriesNames, TbsGoodsType.series.name()); - if(CollUtil.isNotEmpty(changeConditionList)){ - tbsBudgetChangeConditionService.saveBatch(changeConditionList); - } - } + this.toSaveChangeCondition(categoryMap, budget, paramItem, budgetId, changeId); List changeScheduleItemList = new ArrayList<>(); this.buildChangeSchduleBudgetList(paramItem, budgetId, changeId, changeScheduleItemList); if(CollUtil.isNotEmpty(changeScheduleItemList)){ tbsBudgetChangeScheduleItemService.saveBatch(changeScheduleItemList); } + TbsBudgetBatchItem batchItem = new TbsBudgetBatchItem(); + batchItem.setBudgetId(budgetId); + batchItem.setChangeId(changeId); + batchItem.setBatchState(TbsBudgetCheckState.State_1_apply); + batchItem.setUserId(sysUser.getId()); + batchItem.setUserCode(sysUser.getCode()); + batchItem.setUserName(sysUser.getName()); + batchItems.add(batchItem); + }else { //修改后为新增类型提交 - tbsBudgetService.removeById(budgetId); - tbsBudgetConditionService.remove( - new LambdaQueryWrapper() - .eq(TbsBudgetCondition::getBudgetId,budgetId) - ); - tbsScheduleItemBudgetService.remove( - new LambdaQueryWrapper() - .eq(TbsScheduleItemBudget::getBudgetId,budgetId) - ); - //设置新的值 - TbsBudget newBudget = new TbsBudget(); - newBudget.setId(budgetId); - TbsSchedule schedule = scheduleMap.get(paramItem.getScheduleName()); - this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, paramItem, newBudget); - //创建新条件 - List conditionList = this.createTbsBudgetConditions(categoryMap, paramItem, budgetId); - //创建新预算周期 - List scheduleItemBudgetList = this.createTbsScheduleItemBudgetList(paramItem, budgetId, schedule); - //数据持久化 - tbsBudgetService.updateById(newBudget); - if(CollectionUtil.isNotEmpty(conditionList)){ - tbsBudgetConditionService.saveBatch(conditionList); - } - tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList); + this.toUpdateBudgetInfo(sysUser, scheduleMap, subjectMap, centerDtoMap, categoryMap, paramItem, budgetId); + TbsBudgetBatchItem batchItem = new TbsBudgetBatchItem(); + batchItem.setBudgetId(budgetId); + batchItem.setBatchState(TbsBudgetCheckState.State_1_apply); + batchItem.setUserId(sysUser.getId()); + batchItem.setUserCode(sysUser.getCode()); + batchItem.setUserName(sysUser.getName()); + batchItems.add(batchItem); } } } @@ -266,13 +241,70 @@ public class TbsBudgetBatchServiceImpl extends ServiceImplbatchItem.setBatchId(batchId)); + tbsBudgetBatchItemService.saveBatch(batchItems); + return budgetBatch; + } + private void toUpdateBudgetInfo(SysUser sysUser, Map scheduleMap, Map subjectMap, Map centerDtoMap, Map categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) { + tbsBudgetService.removeById(budgetId); + tbsBudgetConditionService.remove( + new LambdaQueryWrapper() + .eq(TbsBudgetCondition::getBudgetId, budgetId) + ); + tbsScheduleItemBudgetService.remove( + new LambdaQueryWrapper() + .eq(TbsScheduleItemBudget::getBudgetId, budgetId) + ); + //设置新的值 + TbsBudget newBudget = new TbsBudget(); + newBudget.setId(budgetId); + TbsSchedule schedule = scheduleMap.get(paramItem.getScheduleName()); + this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, paramItem, newBudget); + //创建新条件 + List conditionList = this.createTbsBudgetConditions(categoryMap, paramItem, budgetId); + //创建新预算周期 + List scheduleItemBudgetList = this.createTbsScheduleItemBudgetList(paramItem, budgetId, schedule); + //数据持久化 + tbsBudgetService.updateById(newBudget); + if(CollectionUtil.isNotEmpty(conditionList)){ + tbsBudgetConditionService.saveBatch(conditionList); + } + tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList); + } - return null; + private void toSaveChangeCondition(Map categoryMap, TbsBudget budget, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId) { + if(budget.getConditionFlag().equals(1)){ + List existingConditionList = tbsBudgetConditionService + .list(new LambdaQueryWrapper() + .eq(TbsBudgetCondition::getBudgetId, budgetId)); + String bandNames = paramItem.getBandNames(); + String categoryNames = paramItem.getCategoryNames(); + String seriesNames = paramItem.getSeriesNames(); + //设置changeConditionList参数 + List changeConditionList = new ArrayList<>(); + this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, + bandNames, TbsGoodsType.brand.name()); + this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, + categoryNames, TbsGoodsType.category.name()); + this.buildChangeConditionList(categoryMap, budgetId, changeId, changeConditionList, existingConditionList, + seriesNames, TbsGoodsType.series.name()); + if(CollUtil.isNotEmpty(changeConditionList)){ + tbsBudgetChangeConditionService.saveBatch(changeConditionList); + } + } } private void buildChangeSchduleBudgetList(TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId, List changeScheduleItemList) {