|
|
@ -2,6 +2,8 @@ package com.qs.serve.modules.tbs.service.impl; |
|
|
|
|
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; |
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper; |
|
|
|
import com.qs.serve.common.framework.manager.AsyncFactory; |
|
|
|
import com.qs.serve.common.framework.manager.AsyncManager; |
|
|
|
import com.qs.serve.common.model.enums.BudgetLogOptFlag; |
|
|
|
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; |
|
|
|
import com.qs.serve.common.model.dto.R; |
|
|
@ -198,7 +200,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService |
|
|
|
Long targetId = Long.parseLong(this.getTargetId(param)); |
|
|
|
// 更新金额
|
|
|
|
TbsCostApply apply = new TbsCostApply(); |
|
|
|
// TODO 1.有修改金额为0的异常;2.需要调整预算占用
|
|
|
|
// 有修改金额,调整预算占用
|
|
|
|
BigDecimal totalApply = checkToChangeAmount(param); |
|
|
|
apply.setId(targetId); |
|
|
|
if(totalApply!=null){ |
|
|
@ -231,7 +233,12 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService |
|
|
|
Long targetId = Long.parseLong(this.getTargetId(param)); |
|
|
|
// 更新金额
|
|
|
|
TbsCostApply apply = new TbsCostApply(); |
|
|
|
BigDecimal totalApply = checkToChangeAmount(param); |
|
|
|
BigDecimal totalApply = null; |
|
|
|
try { |
|
|
|
totalApply = checkToChangeAmount(param); |
|
|
|
} catch (Exception e) { |
|
|
|
e.printStackTrace(); |
|
|
|
} |
|
|
|
apply.setId(targetId); |
|
|
|
if(totalApply!=null){ |
|
|
|
apply.setTotalActivityAmount(totalApply); |
|
|
@ -247,41 +254,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService |
|
|
|
} |
|
|
|
//判断审批过程,是否修改了金额
|
|
|
|
if(costApply.getEditAmountFlag().equals(1)){ |
|
|
|
//修改预算占用
|
|
|
|
TbsActivityCenterGoodsService tbsActivityCenterGoodsService = SpringUtils.getBean(TbsActivityCenterGoodsService.class); |
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApply.getId()); |
|
|
|
//查询当前预算占用
|
|
|
|
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>(); |
|
|
|
logLqw.eq(TbsBudgetLog::getRollbackFlag,BudgetLogRollbackFlag.State_0); |
|
|
|
logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); |
|
|
|
logLqw.and(qw->{ |
|
|
|
qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or() |
|
|
|
.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode()); |
|
|
|
}); |
|
|
|
//设置为回滚完成,防止出现多次查询
|
|
|
|
List<TbsBudgetLog> budgetLogList = tbsBudgetLogService.list(logLqw); |
|
|
|
budgetLogList.forEach(bl->{ |
|
|
|
bl.setRollbackFlag(BudgetLogRollbackFlag.State_2); |
|
|
|
}); |
|
|
|
tbsBudgetLogService.updateBatchById(budgetLogList); |
|
|
|
//移除旧预算占用,即添预算
|
|
|
|
budgetLogList.forEach(bl->{ |
|
|
|
bl.setId(null); |
|
|
|
bl.setOptType(BudgetLogOptFlag.State_5.getCode()); |
|
|
|
bl.setAmount(bl.getAmount().negate()); |
|
|
|
bl.setCreateBy(null); |
|
|
|
bl.setCreateTime(null); |
|
|
|
bl.setUpdateTime(null); |
|
|
|
bl.setUpdateBy(null); |
|
|
|
}); |
|
|
|
tbsBudgetLogService.saveBatch(budgetLogList); |
|
|
|
//保存新的预算占用
|
|
|
|
SysUser sysUser = sysUserService.getById(costApply.getUserId()); |
|
|
|
List<TbsBudgetCostItem> budgetCostItemList = tbsBudgetCostItemService.listByCostApplyId(costApply.getId()); |
|
|
|
List<Long> budgetIds = budgetCostItemList.stream().map(TbsBudgetCostItem::getBudgetId).collect(Collectors.toList()); |
|
|
|
List<TbsBudget> budgetList = tbsBudgetMapper.selectBatchIds(budgetIds); |
|
|
|
List<TbsBudgetLog> newBudgetLogList = this.createNewBudgetLogs(costApply, activityCenterGoodsList, sysUser, budgetCostItemList, budgetList); |
|
|
|
tbsBudgetLogService.saveBatch(newBudgetLogList); |
|
|
|
doEditAmtCallback(costApply); |
|
|
|
} |
|
|
|
//更新活动通过时间
|
|
|
|
TbsActivity tbsActivity = new TbsActivity(); |
|
|
@ -291,9 +264,52 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService |
|
|
|
actLqw.eq(TbsActivity::getCostApplyId,targetId); |
|
|
|
tbsActivityMapper.update(tbsActivity,actLqw); |
|
|
|
activitySlottingFeeMapper.updatePassFlagByCostApplyId(targetId,1); |
|
|
|
|
|
|
|
return null; |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 编辑金额后预算调整 |
|
|
|
* @param costApply |
|
|
|
*/ |
|
|
|
private void doEditAmtCallback(TbsCostApply costApply) { |
|
|
|
//修改预算占用
|
|
|
|
TbsActivityCenterGoodsService tbsActivityCenterGoodsService = SpringUtils.getBean(TbsActivityCenterGoodsService.class); |
|
|
|
List<TbsActivityCenterGoods> activityCenterGoodsList = tbsActivityCenterGoodsService.listByCostApplyId(costApply.getId()); |
|
|
|
//查询当前预算占用
|
|
|
|
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>(); |
|
|
|
logLqw.eq(TbsBudgetLog::getRollbackFlag,BudgetLogRollbackFlag.State_0); |
|
|
|
logLqw.eq(TbsBudgetLog::getCostApplyId, costApply.getId()); |
|
|
|
logLqw.and(qw->{ |
|
|
|
qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or() |
|
|
|
.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode()); |
|
|
|
}); |
|
|
|
//设置为回滚完成,防止出现多次查询
|
|
|
|
List<TbsBudgetLog> budgetLogList = tbsBudgetLogService.list(logLqw); |
|
|
|
budgetLogList.forEach(bl->{ |
|
|
|
bl.setRollbackFlag(BudgetLogRollbackFlag.State_2); |
|
|
|
}); |
|
|
|
tbsBudgetLogService.updateBatchById(budgetLogList); |
|
|
|
//移除旧预算占用,即添预算
|
|
|
|
budgetLogList.forEach(bl->{ |
|
|
|
bl.setId(null); |
|
|
|
bl.setOptType(BudgetLogOptFlag.State_5.getCode()); |
|
|
|
bl.setAmount(bl.getAmount().negate()); |
|
|
|
bl.setCreateBy(null); |
|
|
|
bl.setCreateTime(null); |
|
|
|
bl.setUpdateTime(null); |
|
|
|
bl.setUpdateBy(null); |
|
|
|
}); |
|
|
|
tbsBudgetLogService.saveBatch(budgetLogList); |
|
|
|
//保存新的预算占用
|
|
|
|
SysUser sysUser = sysUserService.getById(costApply.getUserId()); |
|
|
|
List<TbsBudgetCostItem> budgetCostItemList = tbsBudgetCostItemService.listByCostApplyId(costApply.getId()); |
|
|
|
List<Long> budgetIds = budgetCostItemList.stream().map(TbsBudgetCostItem::getBudgetId).collect(Collectors.toList()); |
|
|
|
List<TbsBudget> budgetList = tbsBudgetMapper.selectBatchIds(budgetIds); |
|
|
|
List<TbsBudgetLog> newBudgetLogList = this.createNewBudgetLogs(costApply, activityCenterGoodsList, sysUser, budgetCostItemList, budgetList); |
|
|
|
tbsBudgetLogService.saveBatch(newBudgetLogList); |
|
|
|
} |
|
|
|
|
|
|
|
/** |
|
|
|
* 创建新的预算占用记录 |
|
|
|
* @param costApply |
|
|
@ -573,6 +589,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService |
|
|
|
// 判断是否含有下个节点
|
|
|
|
String flag = result.getData(); |
|
|
|
//审批中(next)、完成(finish)、拒绝(refused)
|
|
|
|
log.warn("审批节点返回结果:{}",flag); |
|
|
|
if("finish".equals(flag)){ |
|
|
|
this.doFinished(affairCommit); |
|
|
|
return R.ok(); |
|
|
@ -586,6 +603,8 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService |
|
|
|
} |
|
|
|
}else if ("next".equals(flag)){ |
|
|
|
this.doNext(affairCommit); |
|
|
|
//特殊记录需要异步
|
|
|
|
AsyncManager.me().execute(AsyncFactory.submitCostApply(costApply)); |
|
|
|
return R.ok(); |
|
|
|
} |
|
|
|
}else if (result.getStatus()==500){ |
|
|
|