Browse Source

调整预算日志

mssql
Yen 3 years ago
parent
commit
6116742e7f
  1. 13
      src/main/java/com/qs/serve/common/model/consts/BudgetLogRollbackFlag.java
  2. 8
      src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java
  3. 5
      src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java
  4. 59
      src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

13
src/main/java/com/qs/serve/common/model/consts/BudgetLogRollbackFlag.java

@ -0,0 +1,13 @@
package com.qs.serve.common.model.consts;
/**
* @author YenHex
* @since 2023/1/30
*/
public interface BudgetLogRollbackFlag {
Integer State_0 = 0;
Integer State_1 = 1;
Integer State_2 = 2;
}

8
src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.tbs.controller;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.qs.serve.common.model.annotation.SysLog;
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag;
import com.qs.serve.common.model.consts.SysConfigKey;
import com.qs.serve.common.model.dto.PageVo;
import com.qs.serve.common.model.dto.R;
@ -401,6 +402,13 @@ public class TbsCostApplyController {
apply.setId(costApply.getId());
apply.setChargeState(TbsCostApplyState.State_4_refused.getCode());
tbsCostApplyService.updateById(apply);
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.select(TbsBudgetLog::getId);
logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId());
logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_0);
List<TbsBudgetLog> budgetLogList = tbsBudgetLogService.list(logLqw);
budgetLogList.forEach(a->a.setRollbackFlag(BudgetLogRollbackFlag.State_1));
tbsBudgetLogService.updateBatchById(budgetLogList);
return R.ok();
}else {
TbsCostApply apply = new TbsCostApply();

5
src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java

@ -161,6 +161,11 @@ public class TbsBudgetLog implements Serializable {
@Length(max = 255,message = "备注长度不能超过255字")
private String remark;
/**
* 回退标识
* */
private Integer rollbackFlag;
/** 所属租户 */
@JsonIgnore
@JsonProperty

59
src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java

@ -2,6 +2,7 @@ package com.qs.serve.modules.tbs.service.impl;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
import com.qs.serve.common.model.consts.BudgetLogRollbackFlag;
import com.qs.serve.common.model.dto.R;
import com.qs.serve.common.util.*;
import com.qs.serve.common.util.model.DateFormatString;
@ -120,47 +121,27 @@ public class TbsCostApplyServiceImpl extends ServiceImpl<TbsCostApplyMapper,TbsC
List<TbsBudgetLog> budgetLogList = saveBudgetLog(result, sysUser, costApply, result.getBudgetMatchList(),result.getActivityList());
LambdaQueryWrapper<TbsBudgetLog> logLqw = new LambdaQueryWrapper<>();
logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId());
logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_1);
List<TbsBudgetLog> oldLogList = budgetLogService.list(logLqw);
Map<String,List<TbsBudgetLog>> oldLogMap = oldLogList.stream().collect(Collectors.groupingBy(a->a.getScheduleItemId()+"_"+a.getTargetId()));
List<TbsBudgetLog> insertList = new ArrayList<>();
for (TbsBudgetLog budgetLog : budgetLogList) {
String key = budgetLog.getScheduleItemId()+"_"+budgetLog.getTargetId();
List<TbsBudgetLog> subOldList = oldLogMap.get(key);
if(CollectionUtil.isNotEmpty(subOldList)){
BigDecimal totalOldLogAmount = BigDecimal.ZERO;
for (TbsBudgetLog oldListItem : subOldList) {
totalOldLogAmount = totalOldLogAmount.add(oldListItem.getAmount());
}
BigDecimal diffAmount = budgetLog.getAmount().subtract(totalOldLogAmount);
if(diffAmount.compareTo(BigDecimal.ZERO)>0){
budgetLog.setOptType(5);
budgetLog.setAmount(diffAmount);
insertList.add(budgetLog);
}else if (diffAmount.compareTo(BigDecimal.ZERO)<0){
budgetLog.setOptType(6);
budgetLog.setAmount(diffAmount);
insertList.add(budgetLog);
}
oldLogMap.remove(key);
}else {
insertList.add(budgetLog);
}
}
//调节未包含在budgetLogList的oldLogList的项
if(CollectionUtil.isNotEmpty(oldLogMap)){
for (String key : oldLogMap.keySet()) {
List<TbsBudgetLog> subOldList = oldLogMap.get(key);
for (TbsBudgetLog budgetLog : subOldList) {
budgetLog.setOptType(5);
budgetLog.setAmount(budgetLog.getAmount().negate());
budgetLog.setId(null);
insertList.add(budgetLog);
}
}
}
if(CollectionUtil.isNotEmpty(insertList)){
budgetLogService.saveBatch(insertList);
List<TbsBudgetLog> oldLogList4Upd = oldLogList.stream().map(a->{
TbsBudgetLog budgetLog = new TbsBudgetLog();
budgetLog.setId(a.getId());
budgetLog.setRollbackFlag(BudgetLogRollbackFlag.State_2);
return budgetLog;
}).collect(Collectors.toList());
budgetLogService.updateBatchById(oldLogList4Upd);
for (TbsBudgetLog budgetLog : oldLogList) {
budgetLog.setCreateBy(null);
budgetLog.setCreateTime(null);
budgetLog.setUpdateBy(null);
budgetLog.setUpdateTime(null);
budgetLog.setId(null);
budgetLog.setAmount(budgetLog.getAmount().negate());
budgetLog.setOptType(5);
}
budgetLogService.saveBatch(oldLogList);
budgetLogList.forEach(a->a.setOptType(6));
budgetLogService.saveBatch(budgetLogList);
}
//创建流程后回调
BaseCreateCallbackBo callbackBo = new BaseCreateCallbackBo(TbsSeeYonConst.COST_APPLY_CODE,tbsCostApply.getId()+"");

Loading…
Cancel
Save