From 0e6e39d1ea8398f142f8e1b72a9d0e54bffe7609 Mon Sep 17 00:00:00 2001 From: Yen Date: Fri, 4 Aug 2023 10:08:37 +0800 Subject: [PATCH] =?UTF-8?q?=E5=AE=A1=E6=89=B9=E9=87=91=E9=A2=9D=E4=BF=AE?= =?UTF-8?q?=E6=94=B9=E8=AE=B0=E5=BD=95=E8=A1=A8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../framework/manager/AsyncFactory.java | 3 - .../controller/TbsCostApplyController.java | 2 +- .../tbs/entity/TbsActivitySubjectYarn.java | 48 +++++- .../TbsCostApplyOperationServiceImpl.java | 153 ++++++++++++------ .../impl/VtbVerificationServiceImpl.java | 3 + 5 files changed, 150 insertions(+), 59 deletions(-) diff --git a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java index db89f0d4..fbae21ea 100644 --- a/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java +++ b/src/main/java/com/qs/serve/common/framework/manager/AsyncFactory.java @@ -38,9 +38,6 @@ public class AsyncFactory { return new TimerTask() { @Override public void run() { - if(DevEnvironmentConfig.isDev()){ - System.out.println(JsonUtil.objectToJson(operationLog)); - } SpringUtils.getBean(SysOperationLogMapper.class).saveLog(operationLog); } }; 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 4d3476ef..ecb1f8d0 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 @@ -80,7 +80,7 @@ public class TbsCostApplyController { * @param param * @return */ - //@PostMapping("/testChangeAmt") + @PostMapping("/testChangeAmt") public R testChangeAmt(@RequestBody TbsAffairCommitBo param){ TbsCostApplyOperationServiceImpl impl = SpringUtils.getBean(TbsCostApplyOperationServiceImpl.class); impl.doFinished(param); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubjectYarn.java b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubjectYarn.java index 866c88e9..28edaabe 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubjectYarn.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/TbsActivitySubjectYarn.java @@ -19,7 +19,7 @@ import javax.validation.constraints.NotBlank; /** * 活动科目审批线 实体类 * @author YenHex - * @since 2023-08-03 + * @since 2023-08-04 */ @Data @TableName("tbs_activity_subject_yarn") @@ -31,7 +31,9 @@ public class TbsActivitySubjectYarn implements Serializable { @TableId(type = IdType.AUTO) private Long id; - /** 审批id */ + /** OA的审批ID */ + @NotBlank(message = "OA的审批ID不能为空") + @Length(max = 64,message = "OA的审批ID长度不能超过64字") private String checkId; /** 审批人id */ @@ -49,14 +51,38 @@ public class TbsActivitySubjectYarn implements Serializable { @Length(max = 255,message = "审批人长度不能超过255字") private String userName; + /** OA岗位 */ + @Length(max = 255,message = "OA岗位长度不能超过255字") + private String userHrInfo; + /** 费用申请id */ @NotNull(message = "费用申请id不能为空") private Long costApplyId; + /** 费用申请编码 */ + @NotBlank(message = "费用申请编码不能为空") + @Length(max = 255,message = "费用申请编码长度不能超过255字") + private String costApplyCode; + + /** 费用申请编码 */ + @NotBlank(message = "费用申请编码不能为空") + @Length(max = 255,message = "费用申请编码长度不能超过255字") + private String costApplyTitle; + /** 活动id */ @NotNull(message = "活动id不能为空") private Long activityId; + /** 活动编码 */ + @NotBlank(message = "活动编码不能为空") + @Length(max = 255,message = "活动编码长度不能超过255字") + private String activityCode; + + /** 活动标题 */ + @NotBlank(message = "活动标题不能为空") + @Length(max = 255,message = "活动标题长度不能超过255字") + private String activityTitle; + /** 科目id */ @NotNull(message = "科目id不能为空") private Long subjectId; @@ -74,6 +100,12 @@ public class TbsActivitySubjectYarn implements Serializable { /** 原费用额度 */ private BigDecimal orgAmount; + /** 原场次 */ + private Integer orgCountSession; + + /** 原人数 */ + private Integer orgCountPerson; + /** 费用额度 */ @NotNull(message = "费用额度不能为空") private BigDecimal amount; @@ -86,6 +118,10 @@ public class TbsActivitySubjectYarn implements Serializable { @NotNull(message = "人数不能为空") private Integer countPerson; + /** 原因 */ + @Length(max = 255,message = "备注长度不能超过255字") + private String reason; + /** 备注 */ @Length(max = 255,message = "备注长度不能超过255字") private String remark; @@ -124,15 +160,23 @@ public class TbsActivitySubjectYarn implements Serializable { public static TbsActivitySubjectYarn toNewObject(TbsActivitySubjectYarn source){ TbsActivitySubjectYarn activitySubjectYarn = new TbsActivitySubjectYarn(); activitySubjectYarn.setId(source.getId()); + activitySubjectYarn.setCheckId(source.getCheckId()); activitySubjectYarn.setUserId(source.getUserId()); activitySubjectYarn.setUserCode(source.getUserCode()); activitySubjectYarn.setUserName(source.getUserName()); + activitySubjectYarn.setUserHrInfo(source.getUserHrInfo()); activitySubjectYarn.setCostApplyId(source.getCostApplyId()); + activitySubjectYarn.setCostApplyCode(source.getCostApplyCode()); + activitySubjectYarn.setCostApplyTitle(source.getCostApplyTitle()); activitySubjectYarn.setActivityId(source.getActivityId()); + activitySubjectYarn.setActivityCode(source.getActivityCode()); + activitySubjectYarn.setActivityTitle(source.getActivityTitle()); activitySubjectYarn.setSubjectId(source.getSubjectId()); activitySubjectYarn.setSubjectCode(source.getSubjectCode()); activitySubjectYarn.setSubjectName(source.getSubjectName()); activitySubjectYarn.setOrgAmount(source.getOrgAmount()); + activitySubjectYarn.setOrgCountSession(source.getOrgCountSession()); + activitySubjectYarn.setOrgCountPerson(source.getOrgCountPerson()); activitySubjectYarn.setAmount(source.getAmount()); activitySubjectYarn.setCountSession(source.getCountSession()); activitySubjectYarn.setCountPerson(source.getCountPerson()); 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 35fa4bd0..a12e634c 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 @@ -54,6 +54,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService private final TbsCostApplyService costApplyService; private final TbsActivityMapper tbsActivityMapper; + private final TbsActivitySubjectYarnMapper tbsActivitySubjectYarnMapper; private final SysUserMapper userMapper; private final TbsActivitySlottingFeeMapper activitySlottingFeeMapper; private final TbsBudgetLogMapper tbsBudgetLogMapper; @@ -227,12 +228,12 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService Long targetId = Long.parseLong(this.getTargetId(param)); // 更新金额 TbsCostApply apply = new TbsCostApply(); - //BigDecimal totalApply = checkToChangeAmount(param); + BigDecimal totalApply = checkToChangeAmount(param); apply.setId(targetId); -// if(totalApply!=null){ -// apply.setTotalActivityAmount(totalApply); -// apply.setEditAmountFlag(1); -// } + if(totalApply!=null){ + apply.setTotalActivityAmount(totalApply); + apply.setEditAmountFlag(1); + } apply.setChargeState(TbsCostApplyState.State_2_actioning.getCode()); costApplyService.updateById(apply); TbsCostApply costApply = costApplyService.getById(targetId); @@ -254,14 +255,17 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService qw.eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_1.getCode()).or() .eq(TbsBudgetLog::getOptType,BudgetLogOptFlag.State_6.getCode()); }); + //设置为回滚完成,防止出现多次查询 List 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.setRollbackFlag(BudgetLogRollbackFlag.State_2); bl.setCreateBy(null); bl.setCreateTime(null); bl.setUpdateTime(null); @@ -321,8 +325,8 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService } TbsBudgetLog budgetLog = budgetCostItem.toBudgetLog( costApply, - //BudgetLogOptFlag.State_6, - BudgetLogOptFlag.State_7, + BudgetLogOptFlag.State_6, + //BudgetLogOptFlag.State_7, currentCenterGoods.getCenterGoodsAmount(), sysUser, budgetCode @@ -333,11 +337,11 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService } public BigDecimal checkToChangeAmount(TbsAffairCommitBo param) { + SysUser sysUser = sysUserService.getById( AuthContextUtils.getSysUserId()); Long targetId = Long.parseLong(this.getTargetId(param)); TbsCostApply costApply = costApplyService.getById(targetId); boolean noChanged = costApply.getEditAmountFlag().equals(0); if(CollectionUtil.isNotEmpty(param.getAffairSubjectLines())){ - BigDecimal n100 = new BigDecimal("100"); QueryWrapper comm_qw = new QueryWrapper(); comm_qw.eq("cost_apply_id", targetId); List activityList = tbsActivityMapper.selectList(comm_qw); @@ -357,73 +361,38 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService //初始化重新计算 activityList.forEach(a->a.setTotalAmount(BigDecimal.ZERO)); //先计算科目的费用 + List subjectYarnList = new ArrayList<>(); for (TbsActivitySubject subject : activitySubjectList) { for (TbsAffairCommitBo.AffairSubjectLine subjectLine : param.getAffairSubjectLines()) { - if(subjectLine.getAmount().compareTo(BigDecimal.ZERO)<=0){ - continue; - } if(subjectLine.getSubjectId().equals(subject.getId())){ BigDecimal subjectAmount = subjectLine.getAmount(); //重新计算活动金额 + TbsActivity currActivity = new TbsActivity(); for (TbsActivity activity : activityList) { if(subject.getActivityId().equals(activity.getId())){ activity.setTotalAmount(activity.getTotalAmount().add(subjectAmount)); + currActivity = activity; } } + //保持流程记录 + TbsActivitySubjectYarn subjectYarn = this.createActivitySubjectYarn(param, sysUser, costApply, subject, subjectLine, currActivity); + tbsActivitySubjectYarnMapper.insert(subjectYarn); if(noChanged){ //只对第一次赋值 subject.setOrgAmount(subject.getAmount()); } - subject.setAmount(subjectAmount); subject.setCountPerson(subjectLine.getCountPerson()); subject.setCountSession(subjectLine.getCountSession()); //更新科目 activitySubjectMapper.updateById(subject); //计算科目下的成本中心 - for (TbsActivityCenter activityCenter : activityCenterList) { - boolean eqActivity = activityCenter.getActivityId().equals(subject.getActivityId()); - boolean eqSubject = activityCenter.getSubjectId().equals(subject.getSubjectId()); - if(eqActivity&&eqSubject){ - BigDecimal centerAmt = activityCenter.getCenterRate() - .multiply(subjectAmount).divide(n100,2, RoundingMode.HALF_UP); - if (noChanged){ - //只对第一次赋值 - activityCenter.setOrgCenterAmount(activityCenter.getCenterAmount()); - } - activityCenter.setCenterAmount(centerAmt); - activityCenterMapper.updateById(activityCenter); - //计算成本中心下的商品 - BigDecimal tmpCenterAmt = centerAmt; - for (int i = 0; i < activityCenterGoodsList.size(); i++) { - TbsActivityCenterGoods centerGoods = activityCenterGoodsList.get(i); - boolean eqActivity4Goods = centerGoods.getActivityId().equals(activityCenter.getActivityId()); - boolean eqCenter4Goods = centerGoods.getCenterType().equals(activityCenter.getCenterType()) - &¢erGoods.getCenterId().equals(activityCenter.getCenterId()); - boolean eqSubject4Goods = centerGoods.getSubjectId().equals(activityCenter.getSubjectId()); - if(eqActivity4Goods&&eqCenter4Goods&&eqSubject4Goods){ - if(noChanged){ - //只对第一次赋值 - centerGoods.setOrgCenterAmount(activityCenter.getCenterAmount()); - centerGoods.setOrgCenterGoodsAmount(centerGoods.getCenterGoodsAmount()); - } - centerGoods.setCenterAmount(centerAmt); - BigDecimal centerGoodAmt = null; - if(i+1==activityCenterGoodsList.size()){ - centerGoodAmt = tmpCenterAmt; - }else { - centerGoodAmt = centerAmt.multiply(centerGoods.getCenterGoodsRate()).divide(n100,2,RoundingMode.HALF_DOWN); - tmpCenterAmt = tmpCenterAmt.subtract(centerGoodAmt); - } - centerGoods.setCenterGoodsAmount(centerGoodAmt); - } - } - } - } + this.changeActivityCenterGoodsAmt(noChanged, activityCenterList, activityCenterGoodsList, subject, subjectAmount); break; } } } + //更新活动 BigDecimal total = BigDecimal.ZERO; for (TbsActivity activity : activityList) { @@ -437,6 +406,84 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService return null; } + @NotNull + private TbsActivitySubjectYarn createActivitySubjectYarn(TbsAffairCommitBo param, SysUser sysUser, TbsCostApply costApply, TbsActivitySubject subject, TbsAffairCommitBo.AffairSubjectLine subjectLine, TbsActivity currActivity) { + TbsActivitySubjectYarn subjectYarn = new TbsActivitySubjectYarn(); + subjectYarn.setCheckId(param.getAffairId()); + subjectYarn.setUserId(sysUser.getId()); + subjectYarn.setUserCode(sysUser.getCode()); + subjectYarn.setUserName(sysUser.getName()); + subjectYarn.setUserHrInfo(sysUser.getHrSystemInfo()); + subjectYarn.setCostApplyId(costApply.getId()); + subjectYarn.setCostApplyCode(costApply.getCode()); + subjectYarn.setCostApplyTitle(costApply.getChargeTheme()); + subjectYarn.setActivityId(currActivity.getId()); + subjectYarn.setActivityCode(currActivity.getActivityCode()); + subjectYarn.setActivityTitle(currActivity.getActTitle()); + subjectYarn.setSubjectId(subject.getSubjectId()); + subjectYarn.setSubjectCode(subject.getSubjectCode()); + subjectYarn.setSubjectName(subject.getSubjectName()); + subjectYarn.setOrgAmount(subject.getAmount()); + subjectYarn.setOrgCountSession(subject.getCountSession()); + subjectYarn.setOrgCountPerson(subject.getCountSession()); + subjectYarn.setAmount(subjectLine.getAmount()); + subjectYarn.setCountSession(subjectLine.getCountSession()); + subjectYarn.setCountPerson(subjectLine.getCountPerson()); + subjectYarn.setReason(param.getCaseRemark()); + return subjectYarn; + } + + /** + * 修改ActivityCenterGoods金额 + * @param noChanged + * @param activityCenterList + * @param activityCenterGoodsList + * @param subject + * @param subjectAmount + */ + private void changeActivityCenterGoodsAmt(boolean noChanged, List activityCenterList, List activityCenterGoodsList, TbsActivitySubject subject, BigDecimal subjectAmount) { + BigDecimal n100 = new BigDecimal("100"); + for (TbsActivityCenter activityCenter : activityCenterList) { + boolean eqActivity = activityCenter.getActivityId().equals(subject.getActivityId()); + boolean eqSubject = activityCenter.getSubjectId().equals(subject.getSubjectId()); + if(eqActivity&&eqSubject){ + BigDecimal centerAmt = activityCenter.getCenterRate() + .multiply(subjectAmount).divide(n100,2, RoundingMode.HALF_UP); + if (noChanged){ + //只对第一次赋值 + activityCenter.setOrgCenterAmount(activityCenter.getCenterAmount()); + } + activityCenter.setCenterAmount(centerAmt); + activityCenterMapper.updateById(activityCenter); + //计算成本中心下的商品 + BigDecimal tmpCenterAmt = centerAmt; + for (int i = 0; i < activityCenterGoodsList.size(); i++) { + TbsActivityCenterGoods centerGoods = activityCenterGoodsList.get(i); + boolean eqActivity4Goods = centerGoods.getActivityId().equals(activityCenter.getActivityId()); + boolean eqCenter4Goods = centerGoods.getCenterType().equals(activityCenter.getCenterType()) + &¢erGoods.getCenterId().equals(activityCenter.getCenterId()); + boolean eqSubject4Goods = centerGoods.getSubjectId().equals(activityCenter.getSubjectId()); + if(eqActivity4Goods&&eqCenter4Goods&&eqSubject4Goods){ + if(noChanged){ + //只对第一次赋值 + centerGoods.setOrgCenterAmount(activityCenter.getCenterAmount()); + centerGoods.setOrgCenterGoodsAmount(centerGoods.getCenterGoodsAmount()); + } + centerGoods.setCenterAmount(centerAmt); + BigDecimal centerGoodAmt = null; + if(i+1== activityCenterGoodsList.size()){ + centerGoodAmt = tmpCenterAmt; + }else { + centerGoodAmt = centerAmt.multiply(centerGoods.getCenterGoodsRate()).divide(n100,2,RoundingMode.HALF_DOWN); + tmpCenterAmt = tmpCenterAmt.subtract(centerGoodAmt); + } + centerGoods.setCenterGoodsAmount(centerGoodAmt); + } + } + } + } + } + @Override public Object doRefuse(TbsAffairCommitBo param) { Long costApplyId = Long.parseLong(this.getTargetId(param)); diff --git a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java index 7d1c9002..d0b5e76c 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/impl/VtbVerificationServiceImpl.java @@ -969,6 +969,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl