|
@@ -10,6 +10,7 @@ import com.dayou.brokerage.NonMarketerMarketerBrokerageCalculator;
|
|
import com.dayou.brokerage.constants.BrokerageMode;
|
|
import com.dayou.brokerage.constants.BrokerageMode;
|
|
import com.dayou.brokerage.constants.BrokerageRule;
|
|
import com.dayou.brokerage.constants.BrokerageRule;
|
|
import com.dayou.brokerage.constants.BrokerageState;
|
|
import com.dayou.brokerage.constants.BrokerageState;
|
|
|
|
+import com.dayou.brokerage.validator.BrokerageValidator;
|
|
import com.dayou.common.BaseEntity;
|
|
import com.dayou.common.BaseEntity;
|
|
import com.dayou.dto.ItemDTO;
|
|
import com.dayou.dto.ItemDTO;
|
|
import com.dayou.dto.ParticipantSettleDTO;
|
|
import com.dayou.dto.ParticipantSettleDTO;
|
|
@@ -79,6 +80,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
@Autowired
|
|
@Autowired
|
|
private ItemBrokerageGeneralMapper brokerageGeneralMapper;
|
|
private ItemBrokerageGeneralMapper brokerageGeneralMapper;
|
|
|
|
|
|
|
|
+
|
|
@Override
|
|
@Override
|
|
@SuppressWarnings("unchecked")
|
|
@SuppressWarnings("unchecked")
|
|
public Page<BrokerageGeneralVO> selectPage(Page page, BrokerageGeneralVO itemBrokerageGeneral){
|
|
public Page<BrokerageGeneralVO> selectPage(Page page, BrokerageGeneralVO itemBrokerageGeneral){
|
|
@@ -164,7 +166,8 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
@Override
|
|
@Override
|
|
public void editMarketerBrokerage(ItemDTO itemDTO) {
|
|
public void editMarketerBrokerage(ItemDTO itemDTO) {
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemDTO.getId()).eq(BaseEntity::getDeleted,Boolean.FALSE));
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemDTO.getId()).eq(BaseEntity::getDeleted,Boolean.FALSE));
|
|
- ItemBrokerageDetail marketerDetail = iItemBrokerageDetailService.getOne(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getGeneralId, general.getId()).eq(BaseEntity::getDeleted, Boolean.FALSE).eq(ItemBrokerageDetail::getBrokerageMode,BrokerageMode.PERSONAL.getCode()));
|
|
|
|
|
|
+ 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){
|
|
if (general == null || marketerDetail == null){
|
|
addMarketerBrokerage(itemDTO.getId());
|
|
addMarketerBrokerage(itemDTO.getId());
|
|
log.info("更新项目信息时创建了相关的提成记录");
|
|
log.info("更新项目信息时创建了相关的提成记录");
|
|
@@ -180,6 +183,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
brokerageDetailBO.setUserId(marketerDetail.getUserId());
|
|
brokerageDetailBO.setUserId(marketerDetail.getUserId());
|
|
brokerageDetailBO.setId(marketerDetail.getId());
|
|
brokerageDetailBO.setId(marketerDetail.getId());
|
|
brokerageDetailBO.setGeneralId(general.getId());
|
|
brokerageDetailBO.setGeneralId(general.getId());
|
|
|
|
+ brokerageDetailBO.setMarketerStatus(general.getMarketerStatus());
|
|
brokerageDetailBO = calculator.predictPersonalAmount(brokerageDetailBO);
|
|
brokerageDetailBO = calculator.predictPersonalAmount(brokerageDetailBO);
|
|
iItemBrokerageDetailService.update(brokerageDetailBO);
|
|
iItemBrokerageDetailService.update(brokerageDetailBO);
|
|
|
|
|
|
@@ -234,6 +238,7 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
brokerageDetailBO.setBrokerageStageId(brokerageStageId);
|
|
brokerageDetailBO.setBrokerageStageId(brokerageStageId);
|
|
brokerageDetailBO.setStageWeight(itemStageVO.getWeight());
|
|
brokerageDetailBO.setStageWeight(itemStageVO.getWeight());
|
|
brokerageDetailBO.setParticipantWeight(x.getWeight());
|
|
brokerageDetailBO.setParticipantWeight(x.getWeight());
|
|
|
|
+ brokerageDetailBO.setParticipantStatus(general.getParticipantStatus());
|
|
ItemBrokerageDetail itemBrokerageDetail = calculator.predictAmount(brokerageDetailBO);
|
|
ItemBrokerageDetail itemBrokerageDetail = calculator.predictAmount(brokerageDetailBO);
|
|
return itemBrokerageDetail;
|
|
return itemBrokerageDetail;
|
|
}).collect(Collectors.toSet());
|
|
}).collect(Collectors.toSet());
|
|
@@ -257,9 +262,21 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Transactional
|
|
@Override
|
|
@Override
|
|
public void editParticipatorBrokerage(ItemStageVO itemStageVO) {
|
|
public void editParticipatorBrokerage(ItemStageVO itemStageVO) {
|
|
|
|
+ //从总表中 删除阶段中的预计提成和实际提成金额 更新总表
|
|
|
|
+ List<ItemBrokerageDetail> list = iItemBrokerageDetailService.list(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getBrokerageStageId, itemStageVO.getId()));
|
|
|
|
+ BigDecimal predictAmounts = list.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal actualAmounts = list.stream().map(ItemBrokerageDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemStageVO.getItemId()));
|
|
|
|
+ general.setParticipantPredictBrokerageAmount(general.getParticipantPredictBrokerageAmount().subtract(predictAmounts));
|
|
|
|
+ general.setParticipantActualBrokerageAmount(general.getParticipantActualBrokerageAmount().subtract(actualAmounts));
|
|
|
|
+ general.setBrokeragePredictAmount(general.getBrokeragePredictAmount().subtract(predictAmounts));
|
|
iItemBrokerageDetailService.remove(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getBrokerageStageId,itemStageVO.getId()));
|
|
iItemBrokerageDetailService.remove(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getBrokerageStageId,itemStageVO.getId()));
|
|
|
|
+ this.updateById(general);
|
|
|
|
+ //如果项目已经被评价 需重新评价
|
|
|
|
+ itemEvaluateMapper.delete(new LambdaQueryWrapper<ItemEvaluate>().eq(ItemEvaluate::getItemId,itemStageVO.getItemId()));
|
|
addParticipatorBrokerage(itemStageVO,itemStageVO.getId());
|
|
addParticipatorBrokerage(itemStageVO,itemStageVO.getId());
|
|
}
|
|
}
|
|
|
|
|
|
@@ -276,16 +293,19 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
return ;
|
|
return ;
|
|
}
|
|
}
|
|
ItemBrokerageGeneral general = this.getById(generalId);
|
|
ItemBrokerageGeneral general = this.getById(generalId);
|
|
|
|
+ brokerageCalculateSupport.checkItemBrokerageStatusOnParticipantPredict(general.getParticipantStatus());
|
|
BigDecimal participatorPredictTotalAmount = list.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
BigDecimal participatorPredictTotalAmount = list.stream().map(ItemBrokerageDetail::getPredictAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
|
|
+ BigDecimal actualAmounts = list.stream().map(ItemBrokerageDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
general.setParticipantPredictBrokerageAmount(general.getParticipantPredictBrokerageAmount().subtract(participatorPredictTotalAmount));
|
|
general.setParticipantPredictBrokerageAmount(general.getParticipantPredictBrokerageAmount().subtract(participatorPredictTotalAmount));
|
|
|
|
+ general.setParticipantActualBrokerageAmount(general.getParticipantActualBrokerageAmount().subtract(actualAmounts));
|
|
general.setBrokeragePredictAmount(general.getBrokeragePredictAmount().subtract(participatorPredictTotalAmount));
|
|
general.setBrokeragePredictAmount(general.getBrokeragePredictAmount().subtract(participatorPredictTotalAmount));
|
|
- this.updateById(general);
|
|
|
|
|
|
+ this.updateById(general);
|
|
iItemBrokerageDetailService.remove(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getBrokerageStageId,itemStageId));
|
|
iItemBrokerageDetailService.remove(new LambdaQueryWrapper<ItemBrokerageDetail>().eq(ItemBrokerageDetail::getBrokerageStageId,itemStageId));
|
|
}
|
|
}
|
|
|
|
|
|
@Transactional
|
|
@Transactional
|
|
@Override
|
|
@Override
|
|
- public void settleParticipatorBrokerage(Long itemId) {
|
|
|
|
|
|
+ public void toSettleParticipatorBrokerage(Long itemId) {
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemId).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemId).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
List<ItemStage> stages = itemStageMapper.selectList(new LambdaQueryWrapper<ItemStage>().eq(ItemStage::getItemId, itemId));
|
|
List<ItemStage> stages = itemStageMapper.selectList(new LambdaQueryWrapper<ItemStage>().eq(ItemStage::getItemId, itemId));
|
|
ItemEvaluate settle = itemEvaluateMapper.selectOne(new LambdaQueryWrapper<ItemEvaluate>().eq(ItemEvaluate::getItemId, itemId).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
ItemEvaluate settle = itemEvaluateMapper.selectOne(new LambdaQueryWrapper<ItemEvaluate>().eq(ItemEvaluate::getItemId, itemId).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
@@ -298,8 +318,8 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
BigDecimal participatorActualTotalAmount = itemBrokerageDetails.stream().map(ItemBrokerageDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
BigDecimal participatorActualTotalAmount = itemBrokerageDetails.stream().map(ItemBrokerageDetail::getActualAmount).reduce(BigDecimal.ZERO, BigDecimal::add);
|
|
general.setParticipantActualBrokerageAmount(participatorActualTotalAmount);
|
|
general.setParticipantActualBrokerageAmount(participatorActualTotalAmount);
|
|
general.setParticipantAdvanceStatus(Boolean.FALSE);
|
|
general.setParticipantAdvanceStatus(Boolean.FALSE);
|
|
- general.setBrokerageActualAmount(participatorActualTotalAmount.add(general.getBrokerageActualAmount()));
|
|
|
|
- general.setParticipantStatus(BrokerageState.CLOSED.getCode());
|
|
|
|
|
|
+// general.setBrokerageActualAmount(participatorActualTotalAmount.add(general.getBrokerageActualAmount()));
|
|
|
|
+ general.setParticipantStatus(BrokerageState.NOT_SETTLE.getCode());
|
|
this.updateById(general);
|
|
this.updateById(general);
|
|
}else {
|
|
}else {
|
|
log.info(ErrorCode.BROKERAGE_SETTLE_FAILED.getErrorMsg()+"项目id:[{}]",itemId);
|
|
log.info(ErrorCode.BROKERAGE_SETTLE_FAILED.getErrorMsg()+"项目id:[{}]",itemId);
|
|
@@ -308,18 +328,19 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
}
|
|
}
|
|
|
|
|
|
@Override
|
|
@Override
|
|
- public void settleMarketerBrokerage(PaymentCollection payment) {
|
|
|
|
|
|
+ public void toSettleMarketerBrokerage(PaymentCollection payment) {
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
Item item = itemMapper.selectById(payment.getItemId());
|
|
Item item = itemMapper.selectById(payment.getItemId());
|
|
List<PaymentCollection> paymentList = paymentCollectionMapper.selectList(new LambdaQueryWrapper<PaymentCollection>()
|
|
List<PaymentCollection> paymentList = paymentCollectionMapper.selectList(new LambdaQueryWrapper<PaymentCollection>()
|
|
.eq(PaymentCollection::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
.eq(PaymentCollection::getItemId, payment.getItemId()).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
BigDecimal payDone = BigDecimal.valueOf(paymentList.stream().mapToDouble(PaymentCollection::getAmount).sum());
|
|
BigDecimal payDone = BigDecimal.valueOf(paymentList.stream().mapToDouble(PaymentCollection::getAmount).sum());
|
|
- brokerageCalculateSupport.checkItemBrokerageStatusOnMarketerSettle(general.getMarketerStatus());
|
|
|
|
|
|
+ brokerageCalculateSupport.checkItemBrokerageStatusOnMarketerPredict(general.getMarketerStatus());
|
|
if (item.getAmount()!=null && item.getAmount().compareTo(payDone)==0){
|
|
if (item.getAmount()!=null && item.getAmount().compareTo(payDone)==0){
|
|
general.setMarketerStatus(BrokerageState.NOT_SETTLE.getCode());
|
|
general.setMarketerStatus(BrokerageState.NOT_SETTLE.getCode());
|
|
this.updateById(general);
|
|
this.updateById(general);
|
|
|
|
+ }else {
|
|
|
|
+ log.info("还有未回款项,暂不执行客户经理提成结算。");
|
|
}
|
|
}
|
|
- log.info("还有未回款项,暂不执行客户经理提成结算。");
|
|
|
|
}
|
|
}
|
|
|
|
|
|
/**
|
|
/**
|
|
@@ -342,6 +363,63 @@ public class ItemBrokerageGeneralServiceImpl extends ServiceImpl<ItemBrokerageGe
|
|
return update;
|
|
return update;
|
|
}
|
|
}
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
+ public void beforeToSettleParticipatorBrokerage(Long itemId) {
|
|
|
|
+ ItemBrokerageGeneral general = this.getOne(new LambdaQueryWrapper<ItemBrokerageGeneral>().eq(ItemBrokerageGeneral::getItemId, itemId).eq(BaseEntity::getDeleted, Boolean.FALSE));
|
|
|
|
+ if (general!=null && general.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @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())){
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @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.getMarketerStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @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.getParticipantStatus().equals(BrokerageState.CLOSED.getCode())){
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ 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())){
|
|
|
|
+ ErrorCode.throwBusinessException(ErrorCode.BROKERAGE_ITEM_STATE_ERROR1);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void beforeToSettleMarketerBrokerage(Long paymentId) {
|
|
|
|
+ PaymentCollection payment = paymentCollectionMapper.selectById(paymentId);
|
|
|
|
+ beforeToSettleMarketerBrokerage(payment);
|
|
|
|
+ }
|
|
|
|
+
|
|
|
|
+ @Override
|
|
|
|
+ public void toSettleMarketerBrokerage(Long paymentId) {
|
|
|
|
+ PaymentCollection payment = paymentCollectionMapper.getDeleted(paymentId);
|
|
|
|
+ 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());
|
|
|
|
+ this.updateById(general);
|
|
|
|
+ }
|
|
|
|
+ }
|
|
|
|
+
|
|
/**
|
|
/**
|
|
* 获取客户经理年回款目标
|
|
* 获取客户经理年回款目标
|
|
* @param userId
|
|
* @param userId
|