diff --git a/src/main/java/com/qs/serve/common/model/consts/BudgetLogRollbackFlag.java b/src/main/java/com/qs/serve/common/model/consts/BudgetLogRollbackFlag.java new file mode 100644 index 00000000..0e62d442 --- /dev/null +++ b/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; + +} diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java index 0d810caa..f4cbdc08 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyController.java +++ b/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 logLqw = new LambdaQueryWrapper<>(); + logLqw.select(TbsBudgetLog::getId); + logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); + logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_0); + List budgetLogList = tbsBudgetLogService.list(logLqw); + budgetLogList.forEach(a->a.setRollbackFlag(BudgetLogRollbackFlag.State_1)); + tbsBudgetLogService.updateBatchById(budgetLogList); return R.ok(); }else { TbsCostApply apply = new TbsCostApply(); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java index e48474c9..cb3847bf 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsBudgetLog.java +++ b/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 diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java index 6d973c1f..a3f459f6 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyServiceImpl.java +++ b/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 budgetLogList = saveBudgetLog(result, sysUser, costApply, result.getBudgetMatchList(),result.getActivityList()); LambdaQueryWrapper logLqw = new LambdaQueryWrapper<>(); logLqw.eq(TbsBudgetLog::getCostApplyId,costApply.getId()); + logLqw.eq(TbsBudgetLog::getRollbackFlag, BudgetLogRollbackFlag.State_1); List oldLogList = budgetLogService.list(logLqw); - Map> oldLogMap = oldLogList.stream().collect(Collectors.groupingBy(a->a.getScheduleItemId()+"_"+a.getTargetId())); - List insertList = new ArrayList<>(); - for (TbsBudgetLog budgetLog : budgetLogList) { - String key = budgetLog.getScheduleItemId()+"_"+budgetLog.getTargetId(); - List 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 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 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()+"");