|
@@ -19,6 +19,7 @@ import com.dayou.exception.ErrorCode;
|
|
|
import com.dayou.mapper.*;
|
|
|
import com.dayou.service.*;
|
|
|
import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
|
|
|
+import com.dayou.utils.DateUtils;
|
|
|
import com.dayou.vo.BrokerageGeneralVO;
|
|
|
import com.dayou.vo.ItemStageVO;
|
|
|
import com.google.common.collect.Sets;
|
|
@@ -30,6 +31,7 @@ import com.baomidou.mybatisplus.core.conditions.query.QueryWrapper;
|
|
|
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
|
+import java.time.LocalDate;
|
|
|
import java.util.HashSet;
|
|
|
import java.util.List;
|
|
|
import java.util.Set;
|
|
@@ -116,9 +118,9 @@ 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.currentYearPayment(userId);
|
|
|
+ BigDecimal currentYearPayment = marketStatService.currentYearPayment(userId);
|
|
|
BigDecimal paymentTarget = new BigDecimal(userTarget.getPaymentTarget());
|
|
|
- bo.setCurrentPayment(currentMonthPayment);
|
|
|
+ bo.setCurrentPayment(currentYearPayment);
|
|
|
bo.setPaymentTarget(paymentTarget);
|
|
|
Set<LeaderRatioBO> leaderRatioBO = userService.getLeaderRatioBO(userId).stream().filter(x->x.getRatio()!=null).collect(Collectors.toSet());
|
|
|
bo = calculator.predictPersonalAmount(bo);
|
|
@@ -327,6 +329,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
public void toSettleMarketerBrokerage(PaymentCollection payment) {
|
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
@@ -335,6 +338,24 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
.eq(PaymentCollection::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
BigDecimal payDone = BigDecimal.valueOf(paymentList.stream().mapToDouble(PaymentCollection::getAmount).sum());
|
|
|
brokerageCalculateSupport.checkItemBrokerageStatusOnMarketerPredict(general.getMarketerStatus());
|
|
|
+
|
|
|
+ //如果此笔回款满足当月回款目标,则需要将上月签订的合同的预提状态改为 可预提
|
|
|
+ //获取此笔回款项目的客户经理本年回款总额
|
|
|
+ Long userId = itemMapper.selectById(payment.getItemId()).getUserId();
|
|
|
+ BigDecimal currentYearPaymentAmount = marketStatService.currentYearPayment(userId);
|
|
|
+ BigDecimal userTarget = new BigDecimal(getUserTarget(userId).getPaymentTarget());
|
|
|
+ if (brokerageCalculateSupport.checkMarketerPredictBrokerage(currentYearPaymentAmount, userTarget)){
|
|
|
+ //则需要将上月签订的合同的预提状态改为 可预提
|
|
|
+ List<ItemBrokerageGeneral> lastMonthItemsBrokerages = itemMapper.getLastMonthItems(DateUtils.getLastMonth23(LocalDate.now().getYear(), LocalDate.now().getMonthValue() - 1),userId,BrokerageState.NOT_PAYMENT.getCode());
|
|
|
+ if (CollectionUtils.isNotEmpty(lastMonthItemsBrokerages)){
|
|
|
+ lastMonthItemsBrokerages.stream().forEach(
|
|
|
+ i->{i.setMarketerAdvanceBrokerageAble(Boolean.TRUE);
|
|
|
+ i.setMarketerStatus(BrokerageState.TO_PREDICTING.getCode());
|
|
|
+ });
|
|
|
+ this.updateBatchById(lastMonthItemsBrokerages);
|
|
|
+ log.info("更新了客户经理预提状态待预提");
|
|
|
+ }
|
|
|
+ }
|
|
|
if (item.getAmount()!=null && item.getAmount().compareTo(payDone)==0){
|
|
|
general.setMarketerStatus(BrokerageState.NOT_SETTLE.getCode());
|
|
|
this.updateById(general);
|
|
@@ -410,9 +431,29 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
beforeToSettleMarketerBrokerage(payment);
|
|
|
}
|
|
|
|
|
|
+ @Transactional
|
|
|
@Override
|
|
|
public void toSettleMarketerBrokerage(Long paymentId) {
|
|
|
PaymentCollection payment = paymentCollectionMapper.getDeleted(paymentId);
|
|
|
+
|
|
|
+ //如果此笔回款满足当月回款目标,则需要将上月签订的合同的预提状态改为 可预提
|
|
|
+ //获取此笔回款项目的客户经理本年回款总额
|
|
|
+ Long userId = itemMapper.selectById(payment.getItemId()).getUserId();
|
|
|
+ BigDecimal currentYearPaymentAmount = marketStatService.currentYearPayment(userId);
|
|
|
+ BigDecimal userTarget = new BigDecimal(getUserTarget(userId).getPaymentTarget());
|
|
|
+ if (!brokerageCalculateSupport.checkMarketerPredictBrokerage(currentYearPaymentAmount, userTarget)){
|
|
|
+ //则需要将上月签订的合同的预提状态改为 不可预提
|
|
|
+ List<ItemBrokerageGeneral> lastMonthItemsBrokerages = itemMapper.getLastMonthItems(DateUtils.getLastMonth23(LocalDate.now().getYear(), LocalDate.now().getMonthValue() - 1),userId,BrokerageState.TO_PREDICTING.getCode());
|
|
|
+ if (CollectionUtils.isNotEmpty(lastMonthItemsBrokerages)){
|
|
|
+ lastMonthItemsBrokerages.stream().forEach(
|
|
|
+ i->{i.setMarketerAdvanceBrokerageAble(Boolean.FALSE);
|
|
|
+ i.setMarketerStatus(BrokerageState.NOT_PAYMENT.getCode());
|
|
|
+ });
|
|
|
+ this.updateBatchById(lastMonthItemsBrokerages);
|
|
|
+ log.info("更新了客户经理预提状态为回款中");
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
if (general.getMarketerStatus().equals(BrokerageState.NOT_SETTLE.getCode())){
|
|
|
general.setMarketerStatus(BrokerageState.NOT_PAYMENT.getCode());
|
|
@@ -420,6 +461,27 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
}
|
|
|
}
|
|
|
|
|
|
+ @Override
|
|
|
+ public void updateAheadStatus(Long userId) {
|
|
|
+ BigDecimal currentYearPaymentAmount = marketStatService.currentYearPayment(userId);
|
|
|
+ BigDecimal userTarget = new BigDecimal(getUserTarget(userId).getPaymentTarget());
|
|
|
+ List<ItemBrokerageGeneral> lastMonthItemsBrokerages = itemMapper.getLastMonthItemsInStatus(DateUtils.getLastMonth23(LocalDate.now().getYear(), LocalDate.now().getMonthValue() - 1),userId);
|
|
|
+ if (brokerageCalculateSupport.checkMarketerPredictBrokerage(currentYearPaymentAmount, userTarget) && CollectionUtils.isNotEmpty(lastMonthItemsBrokerages)){
|
|
|
+ lastMonthItemsBrokerages.stream().forEach(
|
|
|
+ i->{i.setMarketerAdvanceBrokerageAble(Boolean.TRUE);
|
|
|
+ i.setMarketerStatus(BrokerageState.TO_PREDICTING.getCode());
|
|
|
+ });
|
|
|
+ this.updateBatchById(lastMonthItemsBrokerages);
|
|
|
+ }
|
|
|
+ if (!brokerageCalculateSupport.checkMarketerPredictBrokerage(currentYearPaymentAmount, userTarget) && CollectionUtils.isNotEmpty(lastMonthItemsBrokerages)){
|
|
|
+ lastMonthItemsBrokerages.stream().forEach(
|
|
|
+ i->{i.setMarketerAdvanceBrokerageAble(Boolean.FALSE);
|
|
|
+ i.setMarketerStatus(BrokerageState.NOT_PAYMENT.getCode());
|
|
|
+ });
|
|
|
+ this.updateBatchById(lastMonthItemsBrokerages);
|
|
|
+ }
|
|
|
+ }
|
|
|
+
|
|
|
/**
|
|
|
* 获取客户经理年回款目标
|
|
|
* @param userId
|
|
@@ -434,4 +496,6 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
}
|
|
|
return userTarget;
|
|
|
}
|
|
|
+
|
|
|
+
|
|
|
}
|