|
@@ -171,11 +171,9 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
ItemBrokerageDetail marketerDetail = iItemBrokerageDetailService.getOne(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getGeneralId, general.getId())
|
|
|
.eq(BaseEntity::getDeleted, Boolean.FALSE).eq(ItemBrokerageDetail::getBrokerageMode,BrokerageMode.PERSONAL.getCode()).eq(ItemBrokerageDetail::getBrokerageRule,BrokerageRule.LAND_MARKETER_RULE.getCode()));
|
|
|
if (general == null || marketerDetail == null){
|
|
|
- addMarketerBrokerage(itemDTO.getId());
|
|
|
- log.info("更新项目信息时创建了相关的提成记录");
|
|
|
+ log.info("更新项目信息时发现未创建提成总表和明细表记录,更新提成信息逻辑终止。");
|
|
|
return;
|
|
|
}
|
|
|
-
|
|
|
MarketerBrokerageCalculator calculator = (MarketerBrokerageCalculator) brokerageCalculateSupport.getCalculator(BrokerageRule.LAND_MARKETER_RULE);
|
|
|
//更新客户经理的提成记录
|
|
|
UserTarget userTarget = getUserTarget(marketerDetail.getUserId());
|
|
@@ -220,12 +218,6 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
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().filter(s->s.getWeight()!=null).map(x -> {
|
|
|
BrokerageDetailBO brokerageDetailBO = BrokerageDetailBO.builder().build();
|
|
@@ -333,34 +325,39 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
@Override
|
|
|
public void toSettleMarketerBrokerage(PaymentCollection payment) {
|
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
- Item item = itemMapper.selectById(payment.getItemId());
|
|
|
- List<PaymentCollection> paymentList = paymentCollectionMapper.selectList(new LambdaQueryWrapper<PaymentCollection>()
|
|
|
- .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 (general!=null){
|
|
|
+ Item item = itemMapper.selectById(payment.getItemId());
|
|
|
+ List<PaymentCollection> paymentList = paymentCollectionMapper.selectList(new LambdaQueryWrapper<PaymentCollection>()
|
|
|
+ .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);
|
|
|
+ }else {
|
|
|
+ log.info("还有未回款项,暂不执行客户经理提成结算。");
|
|
|
}
|
|
|
}
|
|
|
- if (item.getAmount()!=null && item.getAmount().compareTo(payDone)==0){
|
|
|
- general.setMarketerStatus(BrokerageState.NOT_SETTLE.getCode());
|
|
|
- this.updateById(general);
|
|
|
- }else {
|
|
|
- log.info("还有未回款项,暂不执行客户经理提成结算。");
|
|
|
+ else {
|
|
|
+ log.info("项目提成总表为创建,终止此流程。itemId[{}]",payment.getItemId());
|
|
|
}
|
|
|
}
|
|
|
|
|
@@ -395,7 +392,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
@Override
|
|
|
public void beforeToSettleMarketerBrokerage(PaymentCollection payment) {
|
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
- if (general.getMarketerStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
+ if (general!=null && general.getMarketerStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
}
|
|
|
}
|
|
@@ -403,6 +400,11 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
@Override
|
|
|
public void beforeEditMarketerBrokerage(ItemDTO itemDTO) {
|
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemDTO.getId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
+ if (general == null){
|
|
|
+ addMarketerBrokerage(itemDTO.getId());
|
|
|
+ log.info("更新项目信息时创建了相关的提成记录");
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (general.getMarketerStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
}
|
|
@@ -411,6 +413,12 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
@Override
|
|
|
public void beforeAddParticipatorBrokerage(ItemStageVO itemStageVO) {
|
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStageVO.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
+ if (general == null){
|
|
|
+ addMarketerBrokerage(itemStageVO.getItemId());
|
|
|
+ addParticipatorBrokerage(itemStageVO,itemStageVO.getId());
|
|
|
+ log.info("更新项目信息时创建了相关的提成记录");
|
|
|
+ return;
|
|
|
+ }
|
|
|
if (general.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
}
|
|
@@ -420,7 +428,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
public void beforeRemoveParticipatorBrokerage(Long itemStageId) {
|
|
|
ItemStage itemStage = itemStageMapper.selectById(itemStageId);
|
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStage.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
- if (general.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
+ if (general!=null && general.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
}
|
|
|
}
|