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