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 2fde54aa..75bbf133 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 @@ -74,6 +74,18 @@ public class TbsCostApplyController { private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl; private TbsBudgetMatchApplication tbsBudgetMatchApplication; + + /** + * 复制 + * @param id + * @return + */ + @PostMapping("/copyById/{id}") + public R copyById(@PathVariable("id") Long id){ + return R.ok(costApplyPart1Service.copyById(id)); + } + + /** * 作废费用申请 * @param id diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java index ffbdf15f..ecf51a42 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsCostApply.java @@ -177,6 +177,12 @@ public class TbsCostApply implements Serializable { @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss",timezone = "GMT+8") private LocalDateTime changeActionTime; + /** + * 编辑金额标识 + * 审批通过时恢复0 + */ + private Integer editAmountFlag; + @TableField(exist = false) private String affairId; diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java index fcd3df29..f4059e9e 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyPart1Service.java @@ -9,6 +9,13 @@ import com.qs.serve.modules.tbs.entity.TbsCostApply; */ public interface TbsCostApplyPart1Service { + /** + * 通过ID复制 + * @param costId + * @return + */ + TbsCostApply copyById(Long costId); + /** * 执行异动 * @param costId diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java index 6bcce650..df555768 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyOperationServiceImpl.java @@ -221,8 +221,11 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService TbsCostApply apply = new TbsCostApply(); // TODO 1.有修改金额为0的异常;2.需要调整预算占用 // BigDecimal totalApply = checkToChangeAmount(param, targetId); -// apply.setTotalActivityAmount(totalApply); apply.setId(targetId); +// if(totalApply!=null){ +// apply.setTotalActivityAmount(totalApply); +// apply.setEditAmountFlag(1); +// } apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); costApplyService.updateById(apply); TbsCostApply costApply = costApplyService.getById(targetId); diff --git a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java index cf8b7372..cc484c76 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/impl/TbsCostApplyPart1ServiceImpl.java @@ -6,6 +6,7 @@ import com.qs.serve.common.config.properties.ProjectProperties; import com.qs.serve.common.model.dto.R; import com.qs.serve.common.util.Assert; import com.qs.serve.common.util.AuthContextUtils; +import com.qs.serve.common.util.CodeGenUtil; import com.qs.serve.common.util.CopierUtil; import com.qs.serve.modules.bir.service.BirCenterRateService; import com.qs.serve.modules.bir.service.BirRoiRateService; @@ -57,6 +58,38 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { private VtbVerificationMapper verificationMapper; private TbsBudgetLogMapper tbsBudgetLogMapper; + @Override + public TbsCostApply copyById(Long costId) { + final String newCostApplyCode = CodeGenUtil.generate(CodeGenUtil.SourceKey.CostApply); + TbsCostApply costApply = tbsCostApplyService.getById(costId); + costApply.setId(null); + costApply.setCode(newCostApplyCode); + costApply.setCreateBy(null); + costApply.setCreateTime(null); + costApply.setUpdateTime(null); + costApply.setUpdateBy(null); + costApply.setChangeSourceId(null); + costApply.setChangeExtendId(null); + costApply.setCancelFlag(null); + costApply.setEditAmountFlag(null); + costApply.setChargeState(TbsCostApplyState.State_0_unPublish.getCode()); + tbsCostApplyService.save(costApply); + final Long newCostApplyId = costApply.getId(); + + QueryWrapper qw_cost_apply = new QueryWrapper(); + qw_cost_apply.eq("cost_apply_id",costId); + List contracts = costContractMapper.selectList(qw_cost_apply); + contracts.forEach(con->{ + con.setId(null); + con.setCostApplyId(newCostApplyId); + }); + //活动相关复制 + List activityList = tbsActivityMapper.selectList(qw_cost_apply); + //更新状态 + this.copyAboutActivityData(newCostApplyId,newCostApplyCode, activityList); + return costApply; + } + @Override @Transactional(rollbackFor = Exception.class) public TbsCostApply toSetChanged(Long costId) { @@ -90,6 +123,7 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { costApply.setCreateTime(null); costApply.setUpdateTime(null); costApply.setUpdateBy(null); + costApply.setCancelFlag(null); costApply.setChangeSourceId(orgCost.getId()); costApply.setChangeExtendId(null); costApply.setChargeState(TbsCostApplyState.State_0_unPublish.getCode()); @@ -103,6 +137,11 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { con.setId(null); con.setCostApplyId(newCostApplyId); }); + if(contracts.size()>0){ + for (TbsCostContract contract : contracts) { + costContractMapper.insert(contract); + } + } //活动相关复制 List activityList = tbsActivityMapper.selectList(qw_cost_apply); //更新状态 @@ -112,7 +151,7 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { LambdaQueryWrapper activityLqw = new LambdaQueryWrapper<>(); activityLqw.in(TbsActivity::getId,activityIds); tbsActivityMapper.update(activity4Update,activityLqw); - this.copyAboutActivityData(newCostApplyId, activityList); + this.copyAboutActivityData(newCostApplyId,null, activityList); //更变旧记录 orgCost.setChangeStateRecord(orgCost.getChargeState()); orgCost.setChargeState(TbsCostApplyState.State_7_changed.getCode()); @@ -165,14 +204,20 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { /** * 活动相关复制 * @param newCostApplyId + * @param newCostApplyCode * @param activityList */ - private void copyAboutActivityData(Long newCostApplyId, List activityList) { + private void copyAboutActivityData(Long newCostApplyId,String newCostApplyCode, List activityList) { + int idx = 1; for (TbsActivity orgActivity : activityList) { //原ActivityID Long orgActivityId = orgActivity.getId(); //重新保存 orgActivity.setId(null); + if(newCostApplyCode!=null){ + orgActivity.setActivityCode(newCostApplyCode+"_"+idx); + idx++; + } orgActivity.setCostApplyId(newCostApplyId); orgActivity.setActivityState(0); orgActivity.setCreateBy(null);