From c88fa8f7ed7137b30d19ec035db524b3b1e9bf71 Mon Sep 17 00:00:00 2001 From: Yen Date: Tue, 1 Aug 2023 17:24:46 +0800 Subject: [PATCH 1/2] =?UTF-8?q?=E5=BC=82=E5=8A=A8=E4=BF=AE=E5=A4=8D?= =?UTF-8?q?=EF=BC=9B=E6=96=B0=E5=A2=9E=E5=8D=8F=E8=AE=AE=E7=B1=BB=E6=A0=B8?= =?UTF-8?q?=E9=94=80=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../sys/controller/SysUserController.java | 1 + .../TbsCostApplyCheckController.java | 17 ---- .../controller/TbsCostApplyController.java | 3 + .../tbs/entity/bo/TbsAffairCommitBo.java | 4 +- .../tbs/entity/bo/TbsCheckCostUpdateBo.java | 27 ------ .../TbsCostApplyOperationServiceImpl.java | 20 ++++- .../impl/TbsCostApplyPart1ServiceImpl.java | 1 + .../controller/VtbVerificationController.java | 13 +++ .../entity/bo/VtbVerificationContactBo.java | 45 ++++++++++ .../vtb/service/VtbVerificationService.java | 7 ++ .../impl/VtbVerificationServiceImpl.java | 85 ++++++++++++++++++- 11 files changed, 169 insertions(+), 54 deletions(-) delete mode 100644 src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java create mode 100644 src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java diff --git a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java index 840197e4..2753cda9 100644 --- a/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java +++ b/src/main/java/com/qs/serve/modules/sys/controller/SysUserController.java @@ -332,6 +332,7 @@ public class SysUserController { if(param.getSyAccount()==null){ param.setSyAccount(userBo.getCode()); } + param.setServingState(0); param.setId("SU"+IdUtil.getSnowFlakeId()); boolean result = sysUserService.save(param); // if(param.getId()!=null&& com.qs.serve.common.util.CollectionUtil.isNotEmpty(userBo.getRoleIds())){ diff --git a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java index a041a96b..59bb55bf 100644 --- a/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java +++ b/src/main/java/com/qs/serve/modules/tbs/controller/TbsCostApplyCheckController.java @@ -54,25 +54,8 @@ import java.util.List; @RequestMapping("tbs/costApply") public class TbsCostApplyCheckController { -// private TbsCostApplyPart1Service costApplyPart1Service; -// private TbsCostContractService costContractService; private TbsCostApplyService tbsCostApplyService; -// private TbsActivityService tbsActivityService; -// private TbsActivityTemplateService tbsActivityTemplateService; -// private final TbsActivityGoodsService activityGoodsService; -// private final TbsActivitySubjectService activitySubjectService; -// private final TbsActivityCenterService activityCenterService; -// private final TbsActivityCenterGoodsService activityCenterGoodsService; -// private final TbsActivityChannelService activityChannelService; -// private final TbsActivityChannelPointService activityChannelPointService; -// private TbsBudgetLogService tbsBudgetLogService; -// private BmsSupplierService bmsSupplierService; -// private SysUserService sysUserService; -// private SeeYonRequestService seeYonService; -// private TbsBudgetApplicationService budgetApplicationService; -// private SysPostUserService postUserService; private TbsCostApplyOperationServiceImpl tbsCostApplyOperationServiceImpl; -// private TbsBudgetMatchApplication tbsBudgetMatchApplication; /** 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 17d473f6..2fde54aa 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 @@ -335,6 +335,9 @@ public class TbsCostApplyController { @Transactional(rollbackFor = Exception.class) public R deleteById(@PathVariable("id") Long id){ TbsCostApply entity = tbsCostApplyService.getById(id); + if(entity.getCancelFlag().equals(1)||entity.getChangeExtendId()!=null||entity.getChangeSourceId()!=null){ + return R.error("异动记录不可删除"); + } if(!entity.getChargeState().equals(0)&& !entity.getChargeState().equals(TbsCostApplyState.State_5_stop.getCode())){ return R.error("占用预算的申请,不支持删除"); diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java index cda3477b..316bdf54 100644 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java +++ b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsAffairCommitBo.java @@ -41,7 +41,7 @@ public class TbsAffairCommitBo { private String caseRemark; /** - * 修改金额列表(核销接口专用) + * 修改金额列表(核销和费用审批接口专用) */ private List affairSubjectLines; @@ -49,7 +49,7 @@ public class TbsAffairCommitBo { public static class AffairSubjectLine{ /** - * 科目id + * 科目id(费用申请,活动科目id) */ private Long subjectId; diff --git a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java b/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java deleted file mode 100644 index 242e85d5..00000000 --- a/src/main/java/com/qs/serve/modules/tbs/entity/bo/TbsCheckCostUpdateBo.java +++ /dev/null @@ -1,27 +0,0 @@ -package com.qs.serve.modules.tbs.entity.bo; - -import lombok.Data; - -import java.math.BigDecimal; - -/** - * @author YenHex - * @since 2023/8/1 - */ -@Data -public class TbsCheckCostUpdateBo { - - /** 活动的科目ID */ - private Long activitySubjectId; - - /** 调整金额 */ - private BigDecimal amount; - - /** 人数 */ - private Integer countPerson; - - /** 场次 */ - private Integer countSession; - - -} 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 8d709080..1805fcc3 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 @@ -4,10 +4,7 @@ import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper; import com.qs.serve.common.model.enums.BudgetLogOptFlag; import com.qs.serve.common.model.consts.BudgetLogRollbackFlag; 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.SpringUtils; -import com.qs.serve.common.util.StringUtils; +import com.qs.serve.common.util.*; import com.qs.serve.modules.seeyon.entity.CtpAffair; import com.qs.serve.modules.seeyon.entity.SyAffairStateResult; import com.qs.serve.modules.seeyon.entity.bo.CtpAddNodeDTO; @@ -25,12 +22,14 @@ import com.qs.serve.modules.tbs.common.TbsCostApplyState; import com.qs.serve.modules.tbs.common.TbsSeeYonConst; import com.qs.serve.modules.tbs.common.util.TbsBudgetLogBuildUtil; import com.qs.serve.modules.tbs.entity.TbsActivity; +import com.qs.serve.modules.tbs.entity.TbsActivitySubject; import com.qs.serve.modules.tbs.entity.TbsBudgetLog; import com.qs.serve.modules.tbs.entity.TbsCostApply; import com.qs.serve.modules.tbs.entity.bo.TbsAffairCommitBo; import com.qs.serve.modules.tbs.entity.vo.CtpAffairVo; import com.qs.serve.modules.tbs.mapper.TbsActivityMapper; import com.qs.serve.modules.tbs.mapper.TbsActivitySlottingFeeMapper; +import com.qs.serve.modules.tbs.mapper.TbsActivitySubjectMapper; import com.qs.serve.modules.tbs.mapper.TbsBudgetLogMapper; import com.qs.serve.modules.tbs.service.TbsBudgetLogService; import com.qs.serve.modules.tbs.service.TbsCostApplyPart1Service; @@ -66,6 +65,7 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService private final TbsBudgetLogMapper tbsBudgetLogMapper; private final TbsCostApplyPart1Service costApplyPart1Service; + private final TbsActivitySubjectMapper activitySubjectMapper; @Override public SysUserService getSysUserService() { @@ -319,6 +319,18 @@ public class TbsCostApplyOperationServiceImpl implements SeeYonOperationService R result = getRequestService().commonCommit(affairCommit, templateCode ,syFormId); boolean isBackCommit = affairCommit.getState()==2; if(result.getStatus()==200){ + // 更新金额 + if(CollectionUtil.isNotEmpty(affairCommit.getAffairSubjectLines())){ + List actSubjectIds = affairCommit.getAffairSubjectLines().stream() + .map(TbsAffairCommitBo.AffairSubjectLine::getSubjectId).collect(Collectors.toList()); + LambdaQueryWrapper subLqw = new LambdaQueryWrapper<>(); + subLqw.in(TbsActivitySubject::getId,actSubjectIds); + subLqw.in(TbsActivitySubject::getCostApplyId,affairCommit.getCostApplyId()); + List activitySubjectList = activitySubjectMapper.selectList(subLqw); + for (TbsAffairCommitBo.AffairSubjectLine subjectLine : affairCommit.getAffairSubjectLines()) { + //TODO + } + } // 判断是否含有下个节点 String flag = result.getData(); //审批中(next)、完成(finish)、拒绝(refused) 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..71453cf5 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 @@ -109,6 +109,7 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { List activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList()); TbsActivity activity4Update = new TbsActivity(); activity4Update.setCancelFlag(1); + activity4Update.setCostApplyId(newCostApplyId); LambdaQueryWrapper activityLqw = new LambdaQueryWrapper<>(); activityLqw.in(TbsActivity::getId,activityIds); tbsActivityMapper.update(activity4Update,activityLqw); diff --git a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java index b1345cb8..68a18b7a 100644 --- a/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java +++ b/src/main/java/com/qs/serve/modules/vtb/controller/VtbVerificationController.java @@ -30,6 +30,7 @@ import com.qs.serve.modules.tbs.service.TbsActivityService; import com.qs.serve.modules.tbs.service.TbsActivitySubjectService; import com.qs.serve.modules.tbs.service.TbsCostApplyService; import com.qs.serve.modules.vtb.entity.*; +import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo; import com.qs.serve.modules.vtb.service.*; import com.qs.serve.modules.vtb.service.impl.VtbVerificationOperationServiceImpl; import lombok.AllArgsConstructor; @@ -73,6 +74,18 @@ public class VtbVerificationController { private VtbVerificationYardItemService vtbVerificationYardItemService; private VtbVerificationOperationServiceImpl vtbVerificationOperationService; + + /** + * 创建协议类核销记录 + * @param param + * @return + */ + @PostMapping("/createContactRecord") + private R createContactRecord(@RequestBody VtbVerificationContactBo param){ + vtbVerificationService.createContactRecord(param); + return R.ok(); + } + /** * 作废核销 * @param id diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java b/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java new file mode 100644 index 00000000..6e3a2926 --- /dev/null +++ b/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java @@ -0,0 +1,45 @@ +package com.qs.serve.modules.vtb.entity.bo; + +import lombok.Data; + +import javax.validation.constraints.NotNull; +import java.math.BigDecimal; + +/** + * @author YenHex + * @since 2023/8/1 + */ +@Data +public class VtbVerificationContactBo { + + /** 费用申请ID */ + @NotNull + private Long costApplyId; + + /** 活动ID */ + @NotNull + private Long activityId; + + /** 核销金额 */ + @NotNull + private BigDecimal checkAmount; + + /** 核销人员工号 */ + private String userCode; + + /** 条款编码 */ + private String contactCode; + + /** 场次 */ + private Integer countSession; + + /** 人数 */ + private Integer countPerson; + + /** 支付方式 */ + private String payWay; + + /** 备注 */ + private String remark; + +} diff --git a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java index 21171eb7..5fe8867b 100644 --- a/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java +++ b/src/main/java/com/qs/serve/modules/vtb/service/VtbVerificationService.java @@ -5,6 +5,7 @@ import com.qs.serve.common.model.dto.R; import com.qs.serve.modules.tbs.entity.bo.TbsActivityReopenBo; import com.qs.serve.modules.vtb.entity.VtbVerification; import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo; +import com.qs.serve.modules.vtb.entity.bo.VtbVerificationContactBo; import org.springframework.web.bind.annotation.RequestBody; import javax.validation.Valid; @@ -16,6 +17,12 @@ import javax.validation.Valid; */ public interface VtbVerificationService extends IService { + /** + * 创建协议类核销记录 + * @param param + */ + void createContactRecord(VtbVerificationContactBo param); + /** * 作废核销 * @param id 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 0010558c..d44bc985 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 @@ -38,10 +38,7 @@ import com.qs.serve.modules.tbs.service.impl.TbsCostApplyOperationServiceImpl; import com.qs.serve.modules.vtb.common.VtbFundFlowType; import com.qs.serve.modules.vtb.common.VtbVerificationState; import com.qs.serve.modules.vtb.entity.*; -import com.qs.serve.modules.vtb.entity.bo.VtbVerificationBo; -import com.qs.serve.modules.vtb.entity.bo.VtbVerificationChannelBo; -import com.qs.serve.modules.vtb.entity.bo.VtbVerificationChannelPointBo; -import com.qs.serve.modules.vtb.entity.bo.VtbVerificationSubjectBo; +import com.qs.serve.modules.vtb.entity.bo.*; import com.qs.serve.modules.seeyon.entity.XltApticlaim; import com.qs.serve.modules.vtb.mapper.VtbVerificationMapper; import com.qs.serve.modules.vtb.mapper.VtbVerificationYardItemMapper; @@ -107,6 +104,83 @@ public class VtbVerificationServiceImpl extends ServiceImpl conditionLqw = new LambdaQueryWrapper<>(); + conditionLqw.eq(TbsActivityPayCondition::getCode,param.getContactCode()); + condition = activityPayConditionService.getOne(conditionLqw,false); + if(condition==null){ + Assert.throwEx("协议编码有误"); + } + } + TbsCostApply costApply = costApplyService.getById(param.getCostApplyId()); + if(!costApply.getContractFlag().equals(1)){ + Assert.throwEx("非协议类费用,访问拦截"); + } + if(!costApply.getChargeState().equals(TbsCostApplyState.State_2_actioning.getCode())){ + Assert.throwEx("费用状态不支持"); + } + TbsActivity activity = activityService.getById(param.getActivityId()); + if(!activity.getCostApplyId().equals(param.getCostApplyId())){ + Assert.throwEx("参数异常"); + } + BigDecimal surplus = activity.getTotalAmount().subtract(activity.getUsedAmount()); + if(surplus.compareTo(param.getCheckAmount())<0){ + Assert.throwEx("金额溢出"); + } + Assert.throwEx("功能开发中..."); + BigDecimal finalAmt = activity.getUsedAmount().add(param.getCheckAmount()); + //更新费用 + activity.setUsedAmount(finalAmt); + if(finalAmt.compareTo(activity.getTotalAmount())==0) { + activity.setActivityState(TbsActivityState.STATE_1_Finished); + } + activityService.updateById(activity); + //TODO 更新活动相关费用 + + //判断是否其它费用也完成 + if(finalAmt.compareTo(activity.getTotalAmount())==0){ + LambdaQueryWrapper activityLqw = new LambdaQueryWrapper<>(); + activityLqw.ne(TbsActivity::getActivityState,TbsActivityState.STATE_1_Finished); + activityLqw.ne(TbsActivity::getReleaseFlag,1); + Long count = activityService.count(activityLqw); + if(count==0){ + costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode()); + costApplyService.updateById(costApply); + } + } + + //添加核销记录 + VtbVerification verification = new VtbVerification(); + if(condition!=null){ + verification.setPayConditionId(condition.getId()); + } + verification.setVerificationCode("HX"+CodeGenUtil.generate(CodeGenUtil.SourceKey.Verification)); + verification.setVerificationState(VtbVerificationState.Commiting.getCode()); + verification.setCostApplyId(costApply.getId()); + verification.setActivityId(activity.getId()); + verification.setSupplierId(activity.getSupplierId()); + verification.setSupplierCode(activity.getSupplierCode()); + verification.setSupplierName(activity.getSupplierName()); + verification.setUserId(sysUser.getId()); + verification.setUserCode(sysUser.getCode()); + verification.setUserName(sysUser.getName()); + verification.setWayId(0L); + verification.setWayTitle(param.getPayWay()); + this.save(verification); + + //List addFundFlowList = new ArrayList<>(); + //buildFundFlows(verification.getId(), addFundFlowList, activityGoodsListOfSubjectCenter,currentCenterAmount); + + } + @Override @Transactional(rollbackFor = Exception.class) public void removeCheck(Long id) { @@ -335,6 +409,9 @@ public class VtbVerificationServiceImpl extends ServiceImpl Date: Wed, 2 Aug 2023 11:43:05 +0800 Subject: [PATCH 2/2] =?UTF-8?q?=E5=8D=8F=E8=AE=AE=E7=B1=BB=E6=A0=B8?= =?UTF-8?q?=E9=94=80=E6=B5=81=E7=A8=8B?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../tbs/service/TbsCostApplyService.java | 2 + .../impl/TbsCostApplyPart1ServiceImpl.java | 1 - .../service/impl/TbsCostApplyServiceImpl.java | 16 ++- .../entity/bo/VtbVerificationContactBo.java | 12 +- .../impl/VtbVerificationServiceImpl.java | 132 ++++++++++++++---- 5 files changed, 121 insertions(+), 42 deletions(-) diff --git a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java index eb7fc524..35678163 100644 --- a/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java +++ b/src/main/java/com/qs/serve/modules/tbs/service/TbsCostApplyService.java @@ -17,6 +17,8 @@ import java.util.List; public interface TbsCostApplyService extends IService { + TbsCostApply getByCode(String code); + /** * 作废 * @param id 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 71453cf5..cf8b7372 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 @@ -109,7 +109,6 @@ public class TbsCostApplyPart1ServiceImpl implements TbsCostApplyPart1Service { List activityIds = activityList.stream().map(TbsActivity::getId).collect(Collectors.toList()); TbsActivity activity4Update = new TbsActivity(); activity4Update.setCancelFlag(1); - activity4Update.setCostApplyId(newCostApplyId); LambdaQueryWrapper activityLqw = new LambdaQueryWrapper<>(); activityLqw.in(TbsActivity::getId,activityIds); tbsActivityMapper.update(activity4Update,activityLqw); 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 d0fa277c..b1c321f6 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 @@ -115,7 +115,13 @@ public class TbsCostApplyServiceImpl extends ServiceImpl lqw = new LambdaQueryWrapper<>(); + lqw.eq(TbsCostApply::getCode,code); + lqw.eq(TbsCostApply::getCancelFlag,0); + return this.getOne(lqw,false); + } @Override @Transactional(rollbackFor = Exception.class) @@ -227,7 +233,7 @@ public class TbsCostApplyServiceImpl extends ServiceImpl activityList = tbsActivityMapper.selectList(actLqw); //判断是否进场费 - if(tbsCostApply.getContractFlag().equals(2)){ + if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(2)){ if (activityList.size()>1){ Assert.throwEx("进场费类型只能有一个活动"); } @@ -244,6 +250,12 @@ public class TbsCostApplyServiceImpl extends ServiceImpl payConditions = null; if(tbsCostApply.getContractFlag()!=null&&tbsCostApply.getContractFlag().equals(1)){ + LambdaQueryWrapper contractLambdaQueryWrapper = new LambdaQueryWrapper<>(); + contractLambdaQueryWrapper.eq(TbsCostContract::getCostApplyId,id); + List contractList = costContractMapper.selectList(contractLambdaQueryWrapper); + if(contractList.size()<1||contractList.get(0).getAttachIds()==null||contractList.get(0).getAttachIds().length<1){ + Assert.throwEx("未补充合同内容或未上传合同!!"); + } LambdaQueryWrapper lqw = new LambdaQueryWrapper<>(); lqw.eq(TbsActivityPayCondition::getCostApplyId,id); payConditions = tbsActivityPayConditionMapper.selectList(lqw); diff --git a/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java b/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java index 6e3a2926..8107d450 100644 --- a/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java +++ b/src/main/java/com/qs/serve/modules/vtb/entity/bo/VtbVerificationContactBo.java @@ -12,17 +12,13 @@ import java.math.BigDecimal; @Data public class VtbVerificationContactBo { - /** 费用申请ID */ + /** 费用申请编码 */ @NotNull - private Long costApplyId; + private String costApplyCode; - /** 活动ID */ + /** 核销金额合计 */ @NotNull - private Long activityId; - - /** 核销金额 */ - @NotNull - private BigDecimal checkAmount; + private BigDecimal totalCheckAmount; /** 核销人员工号 */ private String userCode; 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 d44bc985..746db7db 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 @@ -120,42 +120,20 @@ public class VtbVerificationServiceImpl extends ServiceImpl activityLqw = new LambdaQueryWrapper<>(); - activityLqw.ne(TbsActivity::getActivityState,TbsActivityState.STATE_1_Finished); - activityLqw.ne(TbsActivity::getReleaseFlag,1); - Long count = activityService.count(activityLqw); - if(count==0){ - costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode()); - costApplyService.updateById(costApply); - } - } + //Assert.throwEx("功能开发中..."); //添加核销记录 VtbVerification verification = new VtbVerification(); @@ -176,9 +154,101 @@ public class VtbVerificationServiceImpl extends ServiceImpl addFundFlowList = new ArrayList<>(); - //buildFundFlows(verification.getId(), addFundFlowList, activityGoodsListOfSubjectCenter,currentCenterAmount); + //更新费用 + BigDecimal finalAmt = activity.getUsedAmount().add(param.getTotalCheckAmount()); + activity.setUsedAmount(finalAmt); + if(finalAmt.compareTo(activity.getTotalAmount())==0) { + activity.setActivityState(TbsActivityState.STATE_1_Finished); + } + activityService.updateById(activity); + //更新活动相关费用 + List activitySubjectList = activitySubjectService.listByActivityId(activity.getId()); + List activityCenterList = activityCenterService.listByActivity(activity.getId()); + List activityCenterGoodsList = activityCenterGoodsService.listByActivityId(activity.getId()); + BigDecimal tempTotal = finalAmt; + BigDecimal n100 = new BigDecimal("100"); + BigDecimal n10000 = new BigDecimal("10000"); + List activityCenters4Update = new ArrayList<>(); + List activitySubject4Update = new ArrayList<>(); + for (TbsActivitySubject activitySubject : activitySubjectList) { + BigDecimal surplusAmt = activitySubject.getAmount().subtract(activitySubject.getUsedAmount()); + if(surplusAmt.compareTo(BigDecimal.ZERO)<=0){ + continue; + } + List activityCenterGoods4Update = new ArrayList<>(); + //当前科目支付金额 + BigDecimal currentSubjectAmt = null; + if(tempTotal.compareTo(surplusAmt)<0){ + //余额大于核销金额 + currentSubjectAmt = tempTotal; + activitySubject.setUsedAmount(activitySubject.getUsedAmount().add(tempTotal)); + //最后一项 + for (TbsActivityCenter activityCenter : activityCenterList) { + if(activityCenter.getSubjectId().equals(activitySubject.getSubjectId())){ + BigDecimal used = tempTotal.multiply(activityCenter.getCenterRate()).divide(n100,2,RoundingMode.HALF_DOWN); + activityCenter.setUsedAmount(activityCenter.getUsedAmount().add(used)); + activityCenters4Update.add(activityCenter); + } + } + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + if(centerGoods.getSubjectId().equals(activitySubject.getSubjectId())){ + BigDecimal used = tempTotal.multiply(centerGoods.getCenterRate()) + .multiply(centerGoods.getCenterGoodsRate()) + .divide(n10000,2,RoundingMode.HALF_DOWN); + centerGoods.setUsedAmount(centerGoods.getUsedAmount().add(used)); + activityCenterGoods4Update.add(centerGoods); + } + } + break; + }else { + //余额小于于核销金额 + currentSubjectAmt = surplusAmt; + tempTotal = tempTotal.subtract(surplusAmt); + //设置全部完成 + for (TbsActivityCenter activityCenter : activityCenterList) { + if(activityCenter.getSubjectId().equals(activitySubject.getSubjectId())){ + activityCenter.setUsedAmount(activityCenter.getCenterAmount()); + activityCenters4Update.add(activityCenter); + } + } + for (TbsActivityCenterGoods centerGoods : activityCenterGoodsList) { + if(centerGoods.getSubjectId().equals(activitySubject.getSubjectId())){ + centerGoods.setUsedAmount(centerGoods.getCenterGoodsAmount()); + activityCenterGoods4Update.add(centerGoods); + } + } + activitySubject.setUsedAmount(activitySubject.getAmount()); + } + activitySubject4Update.add(activitySubject); + //跟随活动科目同级 + if(CollectionUtil.isNotEmpty(activityCenterGoods4Update)){ + activityCenterGoodsService.updateBatchById(activityCenterGoods4Update); + List addFundFlowList = new ArrayList<>(); + buildFundFlows(verification.getId(), addFundFlowList, activityCenterGoods4Update,currentSubjectAmt); + if(CollectionUtil.isNotEmpty(addFundFlowList)){ + fundFlowService.saveBatch(addFundFlowList); + } + } + } + if(CollectionUtil.isNotEmpty(activitySubject4Update)){ + activitySubjectService.updateBatchById(activitySubject4Update); + } + if(CollectionUtil.isNotEmpty(activityCenters4Update)){ + activityCenterService.updateBatchById(activityCenters4Update); + } + + //判断是否其它费用也完成 + if(finalAmt.compareTo(activity.getTotalAmount())==0){ + LambdaQueryWrapper activityLqw = new LambdaQueryWrapper<>(); + activityLqw.ne(TbsActivity::getActivityState,TbsActivityState.STATE_1_Finished); + activityLqw.ne(TbsActivity::getReleaseFlag,1); + Long count = activityService.count(activityLqw); + if(count==0){ + costApply.setChargeState(TbsCostApplyState.State_3_finished.getCode()); + costApplyService.updateById(costApply); + } + } } @Override @@ -904,7 +974,7 @@ public class VtbVerificationServiceImpl extends ServiceImpl