|
@@ -1,5 +1,7 @@
|
|
|
package com.dayou.service.impl;
|
|
|
|
|
|
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
|
|
|
+import com.baomidou.mybatisplus.core.toolkit.CollectionUtils;
|
|
|
import com.dayou.bo.BrokerageDetailBO;
|
|
|
import com.dayou.brokerage.BrokerageCalculateSupport;
|
|
|
import com.dayou.brokerage.BrokerageCalculator;
|
|
@@ -26,6 +28,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.util.List;
|
|
|
import java.util.Set;
|
|
|
import java.util.stream.Collectors;
|
|
|
|
|
@@ -93,7 +96,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
MarketerBrokerageCalculator calculator = (MarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_MARKETER_RULE);
|
|
|
Long userId = bo.getUserId();
|
|
|
UserTarget userTarget = getUserTarget(userId);
|
|
|
- BigDecimal currentMonthPayment = marketStatService.currentMonthPayment(userId);
|
|
|
+ BigDecimal currentMonthPayment = marketStatService.currentYearPayment(userId);
|
|
|
BigDecimal paymentTarget = new BigDecimal(userTarget.getPaymentTarget());
|
|
|
bo.setCurrentPayment(currentMonthPayment);
|
|
|
bo.setPaymentTarget(paymentTarget);
|
|
@@ -113,14 +116,20 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
@Override
|
|
|
public void addMarketerBrokerage(Long id) {
|
|
|
Item item = itemMapper.selectById(id);
|
|
|
- BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().amount(item.getAmount()).cate(item.getCate()).businessSource(item.getBusinessSource()).itemId(id).build();
|
|
|
- brokerageDetailBO.setBrokerageRule(BrokerageRule.LAND_MARKETER_RULE.getCode());
|
|
|
- brokerageDetailBO.setBrokerageMode(BrokerageMode.PERSONAL.getCode());
|
|
|
- brokerageDetailBO.setAdvanceAmount(BigDecimal.ZERO);
|
|
|
- brokerageDetailBO.setPredictAmount(BigDecimal.ZERO);
|
|
|
- brokerageDetailBO.setActualAmount(BigDecimal.ZERO);
|
|
|
- brokerageDetailBO.setUserId(item.getUserId());
|
|
|
- this.doCreateBrokerageGeneralAndDetail(brokerageDetailBO);
|
|
|
+ if (item.getAmount()!=null){
|
|
|
+ BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().amount(item.getAmount()).cate(item.getCate()).businessSource(item.getBusinessSource()).itemId(id).build();
|
|
|
+ brokerageDetailBO.setBrokerageRule(BrokerageRule.LAND_MARKETER_RULE.getCode());
|
|
|
+ brokerageDetailBO.setBrokerageMode(BrokerageMode.PERSONAL.getCode());
|
|
|
+ brokerageDetailBO.setAdvanceAmount(BigDecimal.ZERO);
|
|
|
+ brokerageDetailBO.setPredictAmount(BigDecimal.ZERO);
|
|
|
+ brokerageDetailBO.setActualAmount(BigDecimal.ZERO);
|
|
|
+ brokerageDetailBO.setAheadAmount(BigDecimal.ZERO);
|
|
|
+ brokerageDetailBO.setUserId(item.getUserId());
|
|
|
+ this.doCreateBrokerageGeneralAndDetail(brokerageDetailBO);
|
|
|
+ }else {
|
|
|
+ log.info("未设置合同金额,创建提成总表和客户经理提成记录终止。itemId[{}]",id);
|
|
|
+ }
|
|
|
+
|
|
|
}
|
|
|
|
|
|
@Transactional
|
|
@@ -160,41 +169,77 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
@Transactional
|
|
|
@Override
|
|
|
public void addParticipatorBrokerage(ItemStageVO itemStageVO,Long brokerageStageId) {
|
|
|
- NonMarketerMarketerBrokerageCalculator calculator = (NonMarketerMarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_OTHER_RULE);
|
|
|
- ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStageVO.getItemId()));
|
|
|
- if (general == null){
|
|
|
- addMarketerBrokerage(itemStageVO.getItemId());
|
|
|
- addParticipatorBrokerage(itemStageVO,brokerageStageId);
|
|
|
- log.info("非正常情况下,更新项目信息时创建了相关的提成记录");
|
|
|
- return;
|
|
|
+ Item item = itemMapper.selectById(itemStageVO.getItemId());
|
|
|
+ if (item.getAmount()!=null){
|
|
|
+ NonMarketerMarketerBrokerageCalculator calculator = (NonMarketerMarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_OTHER_RULE);
|
|
|
+ ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStageVO.getItemId()));
|
|
|
+ if (general == null){
|
|
|
+ addMarketerBrokerage(itemStageVO.getItemId());
|
|
|
+ addParticipatorBrokerage(itemStageVO,brokerageStageId);
|
|
|
+ log.info("非正常情况下,更新项目信息时创建了相关的提成记录");
|
|
|
+ return;
|
|
|
+ }
|
|
|
+ Set<ItemStageVO.ParticipatorWeight> participators = itemStageVO.getParticipators();
|
|
|
+ Set<ItemBrokerageDetail> participatorBrokerageDetails = participators.stream().map(x -> {
|
|
|
+ BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().build();
|
|
|
+ brokerageDetailBO.setBrokerageRule(BrokerageRule.LAND_OTHER_RULE.getCode());
|
|
|
+ brokerageDetailBO.setBrokerageMode(BrokerageMode.PERSONAL.getCode());
|
|
|
+ brokerageDetailBO.setAdvanceAmount(BigDecimal.ZERO);
|
|
|
+ brokerageDetailBO.setPredictAmount(BigDecimal.ZERO);
|
|
|
+ brokerageDetailBO.setActualAmount(BigDecimal.ZERO);
|
|
|
+ brokerageDetailBO.setAmount(item.getAmount());
|
|
|
+ brokerageDetailBO.setUserId(x.getUserId());
|
|
|
+ brokerageDetailBO.setGeneralId(general.getId());
|
|
|
+ brokerageDetailBO.setBrokerageStageId(brokerageStageId);
|
|
|
+ brokerageDetailBO.setStageWeight(itemStageVO.getWeight());
|
|
|
+ brokerageDetailBO.setParticipantWeight(x.getWeight());
|
|
|
+ ItemBrokerageDetail itemBrokerageDetail = calculator.predictAmount(brokerageDetailBO);
|
|
|
+ return itemBrokerageDetail;
|
|
|
+ }).collect(Collectors.toSet());
|
|
|
+ BigDecimal participatorPredictTotalAmount = participatorBrokerageDetails.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+
|
|
|
+ //创建参与人的项目提成详情
|
|
|
+ iItemBrokerageDetailService.saveBatch(participatorBrokerageDetails);
|
|
|
+ //更新项目提成总表信息
|
|
|
+ general.setParticipantPredictBrokerageAmount(participatorPredictTotalAmount);
|
|
|
+ general.setParticipantAdvanceStatus(Boolean.TRUE);
|
|
|
+ general.setBrokeragePredictAmount(general.getMarketerBrokerageAmount().add(participatorPredictTotalAmount));
|
|
|
+ general.setParticipantActualBrokerageAmount(BigDecimal.ZERO);
|
|
|
+ general.setStatus(BrokerageState.PREDICTING.getCode());
|
|
|
+
|
|
|
+ this.updateById(general);
|
|
|
+
|
|
|
+ }else {
|
|
|
+ log.info("未设置合同金额,创建参与人提成记录终止。itemId[{}]",item.getId());
|
|
|
}
|
|
|
- Set<ItemStageVO.ParticipatorWeight> participators = itemStageVO.getParticipators();
|
|
|
- Set<ItemBrokerageDetail> participatorBrokerageDetails = participators.stream().map(x -> {
|
|
|
- BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().build();
|
|
|
- brokerageDetailBO.setBrokerageRule(BrokerageRule.LAND_OTHER_RULE.getCode());
|
|
|
- brokerageDetailBO.setBrokerageMode(BrokerageMode.PERSONAL.getCode());
|
|
|
- brokerageDetailBO.setAdvanceAmount(BigDecimal.ZERO);
|
|
|
- brokerageDetailBO.setPredictAmount(BigDecimal.ZERO);
|
|
|
- brokerageDetailBO.setActualAmount(BigDecimal.ZERO);
|
|
|
- brokerageDetailBO.setUserId(x.getUserId());
|
|
|
- brokerageDetailBO.setGeneralId(general.getId());
|
|
|
- brokerageDetailBO.setBrokerageStageId(brokerageStageId);
|
|
|
- ItemBrokerageDetail itemBrokerageDetail = calculator.predictAmount(brokerageDetailBO);
|
|
|
- return itemBrokerageDetail;
|
|
|
- }).collect(Collectors.toSet());
|
|
|
- BigDecimal participatorPredictTotalAmount = participatorBrokerageDetails.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
|
|
- //创建参与人的项目提成详情
|
|
|
- iItemBrokerageDetailService.saveBatch(participatorBrokerageDetails);
|
|
|
- //更新项目提成总表信息
|
|
|
- general.setParticipantPredictBrokerageAmount(participatorPredictTotalAmount);
|
|
|
- general.setParticipantAdvanceStatus(Boolean.TRUE);
|
|
|
- general.setBrokeragePredictAmount(general.getBrokeragePredictAmount().add(participatorPredictTotalAmount));
|
|
|
- general.setStatus(BrokerageState.PREDICTING.getCode());
|
|
|
|
|
|
- this.updateById(general);
|
|
|
+ }
|
|
|
|
|
|
+ @Override
|
|
|
+ public void editParticipatorBrokerage(ItemStageVO itemStageVO) {
|
|
|
+ iItemBrokerageDetailService.remove(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getBrokerageStageId,itemStageVO.getId()));
|
|
|
+ addParticipatorBrokerage(itemStageVO,itemStageVO.getId());
|
|
|
+ }
|
|
|
|
|
|
+ @Transactional
|
|
|
+ @Override
|
|
|
+ public void removeParticipatorBrokerage(Long itemStageId) {
|
|
|
+ List<ItemBrokerageDetail> list = iItemBrokerageDetailService.list(new LambdaQueryWrapper<ItemBrokerageDetail>()
|
|
|
+ .eq(ItemBrokerageDetail::getBrokerageStageId, itemStageId));
|
|
|
+ if (CollectionUtils.isEmpty(list)){
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+ Long generalId = list.get(0).getGeneralId();
|
|
|
+ if (generalId == null){
|
|
|
+ return ;
|
|
|
+ }
|
|
|
+ ItemBrokerageGeneral general = this.getById(generalId);
|
|
|
+ BigDecimal participatorPredictTotalAmount = list.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
+ general.setParticipantPredictBrokerageAmount(general.getParticipantPredictBrokerageAmount().subtract(participatorPredictTotalAmount));
|
|
|
+ general.setBrokeragePredictAmount(general.getBrokeragePredictAmount().subtract(participatorPredictTotalAmount));
|
|
|
+ this.updateById(general);
|
|
|
+ iItemBrokerageDetailService.remove(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getBrokerageStageId,itemStageId));
|
|
|
}
|
|
|
|
|
|
/**
|