From 6116742e7fe38f58769f9874d4b82c0eebf4b6ea Mon Sep 17 00:00:00 2001 From: Yen Date: Mon, 30 Jan 2023 14:01:48 +0800 Subject: [PATCH] =?UTF-8?q?=E8=B0=83=E6=95=B4=E9=A2=84=E7=AE=97=E6=97=A5?= =?UTF-8?q?=E5=BF=97?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../model/consts/BudgetLogRollbackFlag.java | 13 ++++ .../controller/TbsCostApplyController.java | 8 +++ .../modules/tbs/entity/TbsBudgetLog.java | 5 ++ .../service/impl/TbsCostApplyServiceImpl.java | 59 +++++++------------ 4 files changed, 46 insertions(+), 39 deletions(-) create mode 100644 src/main/java/com/qs/serve/common/model/consts/BudgetLogRollbackFlag.java 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()+"");