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.common.util.TbsBudgetLogBuildUtil;
import com.qs.serve.modules.tbs.entity.*; import com.qs.serve.modules.tbs.entity.*;
import com.qs.serve.modules.tbs.entity.bo.*; 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.entity.vo.TbsBudgetVo;
import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetMapper;
import com.qs.serve.modules.tbs.mapper.TbsScheduleItemBudgetMapper;
import com.qs.serve.modules.tbs.service.*; import com.qs.serve.modules.tbs.service.*;
import lombok.AllArgsConstructor; import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j; import lombok.extern.slf4j.Slf4j;
@ -49,8 +51,11 @@ public class TbsBudgetController {
private final TbsBudgetLogService tbsBudgetLogService; private final TbsBudgetLogService tbsBudgetLogService;
private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService; private final TbsScheduleItemBudgetService tbsScheduleItemBudgetService;
private final TbsBudgetChangeService tbsBudgetChangeService; private final TbsBudgetChangeService tbsBudgetChangeService;
private final TbsBudgetConditionService tbsBudgetConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final SysUserService sysUserService; private final SysUserService sysUserService;
/** /**
* 列表 * 列表
* @param param * @param param
@ -67,6 +72,44 @@ public class TbsBudgetController {
return R.ok(); 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查询 * 列表通过IDS查询
* @apiNote 用于加载模板选中的预算 * @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) @TableField(typeHandler = SplitStringTypeHandler.class,jdbcType= JdbcType.VARCHAR)
private String[] attachIds; private String[] attachIds;
/** 后端传输dto */ /** 预算条件 */
@TableField(exist = false) @TableField(exist = false)
private List<TbsBudgetCondition> budgetConditionList; private List<TbsBudgetCondition> budgetConditionList;
/** 预算金额 */
@TableField(exist = false)
private List<TbsScheduleItemBudget> budgetScheduleItemList;
@TableField(exist = false) @TableField(exist = false)
private List<?> attachList; 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) { public Object doFinished(TbsAffairCommitBo param) {
TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId()); TbsBudgetBatch budgetBatch = budgetBatchService.getById(param.getTargetId());
List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId()); List<TbsBudgetBatchItem> budgetBatchItemList = budgetBatchItemService.listByBatchId(budgetBatch.getId());
for (TbsBudgetBatchItem batchItem : budgetBatchItemList) {
}
return null; 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 TbsBudgetChangeConditionService tbsBudgetChangeConditionService;
private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper; private final TbsScheduleItemBudgetMapper tbsScheduleItemBudgetMapper;
private final TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService; private final TbsBudgetChangeScheduleItemService tbsBudgetChangeScheduleItemService;
private final TbsBudgetBatchItemService tbsBudgetBatchItemService;
@Override @Override
@Transactional(rollbackFor = Exception.class) @Transactional(rollbackFor = Exception.class)
@ -136,7 +137,6 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
budgetBatch.setUserName(sysUser.getName()); budgetBatch.setUserName(sysUser.getName());
budgetBatch.setSubmitTime(LocalDateTime.now()); budgetBatch.setSubmitTime(LocalDateTime.now());
budgetBatch.setRemark(param.getRemark()); budgetBatch.setRemark(param.getRemark());
//构建BatchItems //构建BatchItems
List<TbsBudgetBatchItem> batchItems = new ArrayList<>(); List<TbsBudgetBatchItem> batchItems = new ArrayList<>();
//加载 周期信息 //加载 周期信息
@ -195,32 +195,70 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
tbsBudgetChangeService.save(budgetChange); tbsBudgetChangeService.save(budgetChange);
Long changeId = budgetChange.getId(); Long changeId = budgetChange.getId();
//添加品类条件 //添加品类条件
if(budget.getConditionFlag().equals(1)){ this.toSaveChangeCondition(categoryMap, budget, paramItem, budgetId, changeId);
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<TbsBudgetChangeScheduleItem> changeScheduleItemList = new ArrayList<>(); List<TbsBudgetChangeScheduleItem> changeScheduleItemList = new ArrayList<>();
this.buildChangeSchduleBudgetList(paramItem, budgetId, changeId, changeScheduleItemList); this.buildChangeSchduleBudgetList(paramItem, budgetId, changeId, changeScheduleItemList);
if(CollUtil.isNotEmpty(changeScheduleItemList)){ if(CollUtil.isNotEmpty(changeScheduleItemList)){
tbsBudgetChangeScheduleItemService.saveBatch(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 { }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); tbsBudgetService.removeById(budgetId);
tbsBudgetConditionService.remove( tbsBudgetConditionService.remove(
new LambdaQueryWrapper<TbsBudgetCondition>() new LambdaQueryWrapper<TbsBudgetCondition>()
@ -246,33 +284,27 @@ public class TbsBudgetBatchServiceImpl extends ServiceImpl<TbsBudgetBatchMapper,
} }
tbsScheduleItemBudgetService.saveBatch(scheduleItemBudgetList); 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) { private void buildChangeSchduleBudgetList(TbsBudgetBatchBo.BudgetMain paramItem, Long budgetId, Long changeId, List<TbsBudgetChangeScheduleItem> changeScheduleItemList) {

Loading…
Cancel
Save