Browse Source

Merge remote-tracking branch 'origin/v1.0' into v1.0

v1.0
15989082884@163.com 2 years ago
parent
commit
8dce2df955
  1. 3
      src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java
  2. 93
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java
  3. 3
      src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java
  4. 29
      src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

3
src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java

@ -40,6 +40,9 @@ public class TbsAffairCommitBo {
private String caseRemark;
/** 释放费用 */
private Integer releaseFlag;
/**
* 修改金额列表核销和费用审批接口专用
*/

93
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java

@ -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){

3
src/main/java/com/qs/serve/modules/vtb/entity/VtbVerification.java

@ -67,6 +67,9 @@ public class VtbVerification implements Serializable {
/** 支付状态:0-未支付;1-已支付 */
private Integer paymentState;
/** 记录释放标识 */
private Integer regReleaseFlag;
/** 金额 */
private BigDecimal amount;

29
src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationApplication.java

@ -1,5 +1,6 @@
package com.qs.serve.modules.vtb.service;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.CollectionUtil;
import com.qs.serve.common.util.CopierUtil;
@ -11,6 +12,7 @@ import com.qs.serve.modules.sys.entity.SysUser;
import com.qs.serve.modules.sys.service.SysPostUserService;
import com.qs.serve.modules.sys.service.SysUserService;
import com.qs.serve.modules.tbs.common.TbsActivityState;
import com.qs.serve.modules.tbs.common.TbsCostApplyState;
import com.qs.serve.modules.tbs.common.TbsSeeYonConst;
import com.qs.serve.modules.tbs.entity.TbsActivity;
import com.qs.serve.modules.tbs.entity.TbsActivityPayCondition;
@ -120,6 +122,13 @@ public class VtbVerificationApplication {
@NotNull
@Transactional(rollbackFor = Exception.class)
public R commitAffairSuccess(TbsAffairCommitBo affairCommit, VtbVerification verification, boolean isBackCommit, String flag) {
//更新释放标识
if(affairCommit.getReleaseFlag()!=null){
VtbVerification vtbVer = new VtbVerification();
vtbVer.setId(verification.getId());
vtbVer.setRegReleaseFlag(affairCommit.getReleaseFlag());
vtbVerificationService.updateById(vtbVer);
}
//保存审批线结果
VtbVerificationYard yard = new VtbVerificationYard();
yard.setVerificationId(verification.getId());
@ -236,6 +245,12 @@ public class VtbVerificationApplication {
vtbVerificationService.updateById(vtbVer);
}
}
//释放费用
boolean isRelease = affairCommit.getReleaseFlag()!=null&&affairCommit.getReleaseFlag().equals(1);
if( isRelease &&(isFinish||isStop)){
this.vtbVerificationService.release(verification.getActivityId());
}
return R.ok();
}
@ -245,6 +260,7 @@ public class VtbVerificationApplication {
* @param totalAmount
*/
public void finishCallBack(VtbVerification verification, BigDecimal totalAmount) {
Long costId = null;
if(verification.getPayConditionId()!=null){
//支付条件完成
TbsActivityPayCondition payCondition = activityPayConditionService.getById(verification.getPayConditionId());
@ -270,8 +286,21 @@ public class VtbVerificationApplication {
vtbVer.setVerificationState(VtbVerificationState.Finished.getCode());
vtbVer.setAmount(totalAmount);
vtbVer.setFinishedTime(LocalDateTime.now());
vtbVer.setRegReleaseFlag(verification.getRegReleaseFlag());
vtbVerificationService.updateById(vtbVer);
vtbVerificationService.successCommit(verification.getId());
LambdaQueryWrapper<TbsActivity> countOLqw = new LambdaQueryWrapper<>();
countOLqw.eq(TbsActivity::getCostApplyId,costId);
countOLqw.eq(TbsActivity::getActivityState,TbsActivityState.STATE_0_Todo);
countOLqw.eq(TbsActivity::getReleaseFlag,0);
Long count = tbsActivityService.count(countOLqw);
if(count==0){
TbsCostApply costApply = new TbsCostApply();
costApply.setId(costId);
costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode());
tbsCostApplyService.updateById(costApply);
}
}
/**

Loading…
Cancel
Save