|
|
@ -163,22 +163,22 @@ public class TbsBudgetController { |
|
|
|
public R<?> updateById(@RequestBody @Valid TbsScheduleItemBudgetBo param){ |
|
|
|
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); |
|
|
|
TbsScheduleItemBudget scheduleItemBudget = tbsScheduleItemBudgetService.getById(param.getId()); |
|
|
|
//金额相同时退出
|
|
|
|
if(scheduleItemBudget.getBudgetAmount().compareTo(param.getBudgetAmount())==0){return R.ok();} |
|
|
|
TbsBudget budget = tbsBudgetService.getById(scheduleItemBudget.getBudgetId()); |
|
|
|
TbsScheduleItemBudget itemBudget = new TbsScheduleItemBudget(); |
|
|
|
itemBudget.setId(param.getId()); |
|
|
|
itemBudget.setBudgetAmount(param.getBudgetAmount()); |
|
|
|
tbsScheduleItemBudgetService.updateById(itemBudget); |
|
|
|
//0-预算新增;1-费用申请;2-预算调增;3-预算调减;4-费用释放
|
|
|
|
|
|
|
|
LambdaQueryWrapper<TbsBudgetLog> logLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
logLambdaQueryWrapper.in(TbsBudgetLog::getOptType,BudgetLogOptFlag.getFinalBudgetOptFlag()); |
|
|
|
logLambdaQueryWrapper.eq(TbsBudgetLog::getScheduleItemBudgetId,scheduleItemBudget.getId()); |
|
|
|
List<TbsBudgetLog> tbsBudgetLogs = tbsBudgetLogService.list(logLambdaQueryWrapper); |
|
|
|
BigDecimal logAmount = tbsBudgetLogs.stream().map(a->a.getAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
|
|
|
|
BudgetLogOptFlag optType; |
|
|
|
BigDecimal amount; |
|
|
|
if(scheduleItemBudget.getBudgetAmount().compareTo(param.getBudgetAmount())>0){ |
|
|
|
amount = scheduleItemBudget.getBudgetAmount().subtract(param.getBudgetAmount()); |
|
|
|
optType = BudgetLogOptFlag.State_3; |
|
|
|
}else { |
|
|
|
amount = param.getBudgetAmount().subtract(scheduleItemBudget.getBudgetAmount()); |
|
|
|
BigDecimal amount = param.getBudgetAmount().subtract(logAmount); |
|
|
|
if(amount.compareTo(BigDecimal.ZERO)>0){ |
|
|
|
optType = BudgetLogOptFlag.State_2; |
|
|
|
}else if(amount.compareTo(BigDecimal.ZERO)<0){ |
|
|
|
optType = BudgetLogOptFlag.State_3; |
|
|
|
}else{ |
|
|
|
return R.ok(); |
|
|
|
} |
|
|
|
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser,budget,scheduleItemBudget,optType, amount); |
|
|
|
tbsBudgetLogService.save(budgetLog); |
|
|
|