|
@ -28,6 +28,7 @@ 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.TbsBudgetBo; |
|
|
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetBo; |
|
|
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo; |
|
|
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetExcelBo; |
|
|
|
|
|
import com.qs.serve.modules.tbs.entity.bo.TbsBudgetMoveAmountBo; |
|
|
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.service.*; |
|
|
import com.qs.serve.modules.tbs.service.*; |
|
@ -882,5 +883,53 @@ public class TbsBudgetServiceImpl extends ServiceImpl<TbsBudgetMapper,TbsBudget> |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
@Override |
|
|
|
|
|
public void moveBudgetAmount(TbsBudgetMoveAmountBo bo) { |
|
|
|
|
|
LambdaQueryWrapper<TbsScheduleItemBudget> lqw2 = new LambdaQueryWrapper<>(); |
|
|
|
|
|
lqw2.eq(TbsScheduleItemBudget::getBudgetId,bo.getId()); |
|
|
|
|
|
List<TbsScheduleItemBudget> scheduleItemBudgets = scheduleItemBudgetService.list(lqw2); |
|
|
|
|
|
List<Long> scheduleItemBudgetIds = scheduleItemBudgets.stream().map(a->a.getId()).collect(Collectors.toList()); |
|
|
|
|
|
bo.getOriScheduleItemBudgetIds().forEach(a->{ |
|
|
|
|
|
if(!scheduleItemBudgetIds.contains(a)){ |
|
|
|
|
|
Assert.throwEx("源ID不在请求的预算内"); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
if(!scheduleItemBudgetIds.contains(bo.getTargetScheduleItemBudgetId())){ |
|
|
|
|
|
Assert.throwEx("目标ID不在请求的预算内"); |
|
|
|
|
|
} |
|
|
|
|
|
List<TbsBudgetLog> budgetLogList = new ArrayList<>(); |
|
|
|
|
|
SysUser sysUser = sysUserService.getById(AuthContextUtils.getSysUserId()); |
|
|
|
|
|
TbsBudget budget = this.getById(bo.getId()); |
|
|
|
|
|
TbsScheduleItemBudget targetTbsScheduleItemBudget = scheduleItemBudgetService.getById(bo.getTargetScheduleItemBudgetId()); |
|
|
|
|
|
|
|
|
|
|
|
bo.getOriScheduleItemBudgetIds().forEach(a->{ |
|
|
|
|
|
TbsScheduleItemBudget scheduleItemBudget = scheduleItemBudgetService.getById(a); |
|
|
|
|
|
LambdaQueryWrapper<TbsBudgetLog> budgetLogLambdaQueryWrapper = new LambdaQueryWrapper<>(); |
|
|
|
|
|
budgetLogLambdaQueryWrapper.eq(TbsBudgetLog::getScheduleItemBudgetId,a); |
|
|
|
|
|
List<TbsBudgetLog> logList = budgetLogService.list(budgetLogLambdaQueryWrapper); |
|
|
|
|
|
BigDecimal unUserAmount = logList.stream().map(b->b.getAmount()).reduce(BigDecimal.ZERO,BigDecimal::add); |
|
|
|
|
|
BigDecimal fixAmount = BigDecimal.ZERO.subtract(unUserAmount); |
|
|
|
|
|
if(fixAmount.compareTo(BigDecimal.ZERO)>0){ |
|
|
|
|
|
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, scheduleItemBudget, |
|
|
|
|
|
BudgetLogOptFlag.State_2,fixAmount); |
|
|
|
|
|
budgetLogList.add(budgetLog); |
|
|
|
|
|
|
|
|
|
|
|
TbsBudgetLog targetBudgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, targetTbsScheduleItemBudget, |
|
|
|
|
|
BudgetLogOptFlag.State_3,unUserAmount); |
|
|
|
|
|
budgetLogList.add(targetBudgetLog); |
|
|
|
|
|
}else if(fixAmount.compareTo(BigDecimal.ZERO)<0){ |
|
|
|
|
|
TbsBudgetLog budgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, scheduleItemBudget, |
|
|
|
|
|
BudgetLogOptFlag.State_3,fixAmount); |
|
|
|
|
|
budgetLogList.add(budgetLog); |
|
|
|
|
|
|
|
|
|
|
|
TbsBudgetLog targetBudgetLog = TbsBudgetLogBuildUtil.toTbsBudgetLog(sysUser, budget, targetTbsScheduleItemBudget, |
|
|
|
|
|
BudgetLogOptFlag.State_2,unUserAmount); |
|
|
|
|
|
budgetLogList.add(targetBudgetLog); |
|
|
|
|
|
} |
|
|
|
|
|
}); |
|
|
|
|
|
budgetLogService.saveBatch(budgetLogList); |
|
|
|
|
|
|
|
|
|
|
|
} |
|
|
} |
|
|
} |
|
|
|
|
|
|
|
|