Browse Source

暂存批量导入预算审批(导出,联合测试)

v1.0
Yen 2 years ago
parent
commit
74c9ff7a91
  1. 43
      src/main/java/com/qs/serve/modules/tbs/controller/TbsBudgetController.java
  2. 6
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudget.java
  3. 2
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchOperationServiceImpl.java
  4. 122
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java

43
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<List<TbsBudget>> list4Export(TbsBudgetSo param){
List<Long> budgetIds = tbsBudgetMapper.selectBudgetId(param);
if(budgetIds.size()>0){
List<TbsBudget> list = tbsBudgetService.listByIds(budgetIds);
for (TbsBudget budget : list) {
List<TbsBudgetCondition> conditionList = tbsBudgetConditionService
.list(new LambdaQueryWrapper<TbsBudgetCondition>()
.eq(TbsBudgetCondition::getBudgetId, budget.getId()));
List<TbsScheduleItemBudget> scheduleItemBudgetList = tbsScheduleItemBudgetService
.list(new LambdaQueryWrapper<TbsScheduleItemBudget>()
.eq(TbsScheduleItemBudget::getBudgetId, budget.getId()));
List<Long> scheduleItemBudgetIds = scheduleItemBudgetList.stream()
.map(TbsScheduleItemBudget::getId).collect(Collectors.toList());
//实际发布预算
List<TbsBudgetLogWithAmount> 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 用于加载模板选中的预算

6
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<TbsBudgetCondition> budgetConditionList;
/** 预算金额 */
@TableField(exist = false)
private List<TbsScheduleItemBudget> budgetScheduleItemList;
@TableField(exist = false)
private List<?> attachList;

2
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<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId());
for (TbsBudgetBatchItem batchItem : budgetBatchItemList) {
}
return null;
}

122
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsBudgetBatchServiceImpl.java

@ -66,6 +66,7 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
private final TbsBudgetChangeConditionService tbsBudgetChangeConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService;
private final TbsBudgetBatchItemService tbsBudgetBatchItemService;
@Override
@Transactional(rollbackFor = Exception.class)
@ -136,7 +137,6 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
budgetBatch.setUserName(sysUser.getName());
budgetBatch.setSubmitTime(LocalDateTime.now());
budgetBatch.setRemark(param.getRemark());
//构建BatchItems
List<TbsBudgetBatchItem> batchItems = new ArrayList<>();
//加载 周期信息
@ -195,32 +195,70 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
tbsBudgetChangeService.save(budgetChange);
Long changeId = budgetChange.getId();
//添加品类条件
if(budget.getConditionFlag().equals(1)){
List<TbsBudgetCondition> existingConditionList = tbsBudgetConditionService
.list(new LambdaQueryWrapper<TbsBudgetCondition>()
.eq(TbsBudgetCondition::getBudgetId,budgetId));
String bandNames = paramItem.getBandNames();
String categoryNames = paramItem.getCategoryNames();
String seriesNames = paramItem.getSeriesNames();
//设置changeConditionList参数
List<TbsBudgetChangeCondition> 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<TbsBudgetChangeScheduleItem> 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 {
//修改后为新增类型提交
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);
}
}
}
//新增的生成为草稿
List<TbsBudgetBatchBo.BudgetMain> addBudgetList = paramBudgetList.stream()
.filter(a->!StringUtils.hasText(a.getBudgetNumber())).collect(Collectors.toList());
for (TbsBudgetBatchBo.BudgetMain budgetMain : addBudgetList) {
TbsBudget newBudget = new TbsBudget();
tbsBudgetService.save(newBudget);
Long budgetId = newBudget.getId();
TbsSchedule schedule = scheduleMap.get(budgetMain.getScheduleName());
this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, budgetMain, newBudget);
//创建新条件
List<TbsBudgetCondition> conditionList = this.createTbsBudgetConditions(categoryMap, budgetMain, budgetId);
//创建新预算周期
List<TbsScheduleItemBudget> scheduleItemBudgetList = this.createTbsScheduleItemBudgetList(budgetMain, budgetId, schedule);
//数据持久化
if(CollectionUtil.isNotEmpty(conditionList)){
tbsBudgetConditionService.saveBatch(conditionList);
}
tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList);
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);
}
this.save(budgetBatch);
//保存后赋值
Long batchId = budgetBatch.getId();
batchItems.forEach(batchItem->batchItem.setBatchId(batchId));
tbsBudgetBatchItemService.saveBatch(batchItems);
return budgetBatch;
}
private void toUpdateBudgetInfo(SysUser sysUser, Map<String, TbsSchedule> scheduleMap, Map<String, BmsSubject> subjectMap, Map<String, TbsCenterDto> centerDtoMap, Map<String, GoodsCategory> categoryMap, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId) {
tbsBudgetService.removeById(budgetId);
tbsBudgetConditionService.remove(
new LambdaQueryWrapper<TbsBudgetCondition>()
@ -246,33 +284,27 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
}
tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList);
}
private void toSaveChangeCondition(Map<String, GoodsCategory> categoryMap, TbsBudget budget, TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId) {
if(budget.getConditionFlag().equals(1)){
List<TbsBudgetCondition> existingConditionList = tbsBudgetConditionService
.list(new LambdaQueryWrapper<TbsBudgetCondition>()
.eq(TbsBudgetCondition::getBudgetId, budgetId));
String bandNames = paramItem.getBandNames();
String categoryNames = paramItem.getCategoryNames();
String seriesNames = paramItem.getSeriesNames();
//设置changeConditionList参数
List<TbsBudgetChangeCondition> 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);
}
}
//新增的生成为草稿
List<TbsBudgetBatchBo.BudgetMain> addBudgetList = paramBudgetList.stream()
.filter(a->!StringUtils.hasText(a.getBudgetNumber())).collect(Collectors.toList());
for (TbsBudgetBatchBo.BudgetMain budgetMain : addBudgetList) {
TbsBudget newBudget = new TbsBudget();
tbsBudgetService.save(newBudget);
Long budgetId = newBudget.getId();
TbsSchedule schedule = scheduleMap.get(budgetMain.getScheduleName());
this.initBudget4Update(sysUser,schedule, subjectMap, centerDtoMap, budgetMain, newBudget);
//创建新条件
List<TbsBudgetCondition> conditionList = this.createTbsBudgetConditions(categoryMap, budgetMain, budgetId);
//创建新预算周期
List<TbsScheduleItemBudget> scheduleItemBudgetList = this.createTbsScheduleItemBudgetList(budgetMain, budgetId, schedule);
//数据持久化
if(CollectionUtil.isNotEmpty(conditionList)){
tbsBudgetConditionService.saveBatch(conditionList);
}
tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList);
}
this.save(budgetBatch);
//保存后赋值
Long budgetBatchId = budgetBatch.getId();
return null;
}
private void buildChangeSchduleBudgetList(TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId, List<TbsBudgetChangeScheduleItem> changeScheduleItemList) {

Loading…
Cancel
Save