|
@@ -18,15 +18,24 @@ import com.ydtech.modules.base.controller.BaseController;
|
|
|
import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
import com.ydtech.modules.esm.model.EsmUserReferrer;
|
|
|
import com.ydtech.modules.esm.service.EsmUserReferrerService;
|
|
import com.ydtech.modules.esm.service.EsmUserReferrerService;
|
|
|
import com.ydtech.modules.order.entity.BasePageResult;
|
|
import com.ydtech.modules.order.entity.BasePageResult;
|
|
|
|
|
+import com.ydtech.modules.order.entity.InsOrders;
|
|
|
|
|
+import com.ydtech.modules.order.service.InsAreaCompanyService;
|
|
|
|
|
+import com.ydtech.modules.order.service.InsOrdersService;
|
|
|
|
|
+import com.ydtech.modules.protocols.entity.po.InsFeeOrderNew;
|
|
|
|
|
+import com.ydtech.modules.protocols.service.InsFeeOrderNewService;
|
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
import org.apache.commons.lang3.ObjectUtils;
|
|
|
import org.apache.commons.lang3.StringUtils;
|
|
import org.apache.commons.lang3.StringUtils;
|
|
|
|
|
+import org.springframework.beans.BeanUtils;
|
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
import org.springframework.beans.factory.annotation.Autowired;
|
|
|
import org.springframework.stereotype.Service;
|
|
import org.springframework.stereotype.Service;
|
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
import org.springframework.transaction.annotation.Transactional;
|
|
|
|
|
+import org.springframework.util.CollectionUtils;
|
|
|
|
|
|
|
|
import java.math.BigDecimal;
|
|
import java.math.BigDecimal;
|
|
|
import java.math.RoundingMode;
|
|
import java.math.RoundingMode;
|
|
|
import java.util.Date;
|
|
import java.util.Date;
|
|
|
|
|
+import java.util.HashMap;
|
|
|
|
|
+import java.util.List;
|
|
|
|
|
|
|
|
/**
|
|
/**
|
|
|
* @author Administrator
|
|
* @author Administrator
|
|
@@ -45,6 +54,10 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
|
|
|
|
|
|
|
|
@Autowired
|
|
@Autowired
|
|
|
private SysUserBankCardService sysUserBankCardService;
|
|
private SysUserBankCardService sysUserBankCardService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private InsAreaCompanyService insAreaCompanyService;
|
|
|
|
|
+ @Autowired
|
|
|
|
|
+ private InsFeeOrderNewService insFeeOrderNewService;
|
|
|
|
|
|
|
|
@Override
|
|
@Override
|
|
|
@Transactional
|
|
@Transactional
|
|
@@ -228,6 +241,164 @@ public class SysUserAccountServiceImpl extends ServiceImpl<SysUserAccountMapper,
|
|
|
return sysUserAccount;
|
|
return sysUserAccount;
|
|
|
}
|
|
}
|
|
|
|
|
|
|
|
|
|
+ @Override
|
|
|
|
|
+ public SysUserAccountVo getSysAllAmount(String userId) {
|
|
|
|
|
+ SysUserAccountVo sysUserAccountVo = new SysUserAccountVo();
|
|
|
|
|
+ SysUserAccount sysUserAccount = baseMapper.getById(userId);
|
|
|
|
|
+ BeanUtils.copyProperties(sysUserAccount, sysUserAccountVo);
|
|
|
|
|
+
|
|
|
|
|
+ BigDecimal willHalding=BigDecimal.ZERO; //预收手续费佣金
|
|
|
|
|
+ BigDecimal willDocumentary =BigDecimal.ZERO; //预收 非跟单佣金
|
|
|
|
|
+ BigDecimal willPromotion =BigDecimal.ZERO; //预收 推广
|
|
|
|
|
+
|
|
|
|
|
+ this.willPromotion(willPromotion,userId); // 佣金
|
|
|
|
|
+ List<InsOrders> willList = insAreaCompanyService.getByUserId(userId);
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(willList)){
|
|
|
|
|
+ for (InsOrders item : willList){
|
|
|
|
|
+ String quoteno = item.getQuoteno();
|
|
|
|
|
+ if(StringUtils.isNotEmpty(quoteno)){
|
|
|
|
|
+ this.willAmount(quoteno,willHalding,willDocumentary); // 推广 非跟单
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+// 体现中
|
|
|
|
|
+ HashMap<String, Object> params = new HashMap<>();
|
|
|
|
|
+ params.put("auditingStatus","2"); // 待审核
|
|
|
|
|
+ params.put("userId",userId);
|
|
|
|
|
+ List<SysAmountAuditingEntity> sysAmountAuditingProgressIng= sysAmountAuditingService.getProgressIng(params);
|
|
|
|
|
+ this.judge(sysAmountAuditingProgressIng,sysUserAccountVo);
|
|
|
|
|
+ params.clear();
|
|
|
|
|
+ params.put("auditingStatus","3"); // 已审核审核
|
|
|
|
|
+ params.put("userId",userId);
|
|
|
|
|
+ List<SysAmountAuditingEntity> sysAmountAuditingApproved= sysAmountAuditingService.getProgressIng(params);
|
|
|
|
|
+ this.judgeSysAmountAuditing(sysAmountAuditingApproved,sysUserAccountVo);
|
|
|
|
|
+ sysUserAccountVo.setWillHalding(willHalding);
|
|
|
|
|
+ sysUserAccountVo.setWillDocumentary(willDocumentary);
|
|
|
|
|
+ sysUserAccountVo.setWillPromotion(willPromotion);
|
|
|
|
|
+ return sysUserAccountVo;
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void judgeSysAmountAuditing(List<SysAmountAuditingEntity> sysAmountAuditingApproved, SysUserAccountVo sysUserAccountVo) {
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(sysAmountAuditingApproved)){
|
|
|
|
|
+ for (SysAmountAuditingEntity item: sysAmountAuditingApproved){
|
|
|
|
|
+ if("1".equals(item.getAmountStatus())){ //手续费
|
|
|
|
|
+ BigDecimal amount = item.getAmount();
|
|
|
|
|
+ sysUserAccountVo.setApprovedHalding(amount);
|
|
|
|
|
+ }
|
|
|
|
|
+ if("2".equals(item.getAmountStatus())){ //非跟单
|
|
|
|
|
+ BigDecimal amount = item.getAmount();
|
|
|
|
|
+ sysUserAccountVo.setApprovedDocumentary(amount);
|
|
|
|
|
+ }
|
|
|
|
|
+ if("3".equals(item.getAmountStatus())){ //推广费
|
|
|
|
|
+ BigDecimal amount = item.getAmount();
|
|
|
|
|
+ sysUserAccountVo.setApprovedPromotion(amount);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void judge(List<SysAmountAuditingEntity> sysAmountAuditingProgressIng,SysUserAccountVo sysUserAccountVo) {
|
|
|
|
|
+ if(!CollectionUtils.isEmpty(sysAmountAuditingProgressIng)){
|
|
|
|
|
+ for (SysAmountAuditingEntity item: sysAmountAuditingProgressIng){
|
|
|
|
|
+ if("1".equals(item.getAmountStatus())){ //手续费
|
|
|
|
|
+ BigDecimal amount = item.getAmount();
|
|
|
|
|
+ sysUserAccountVo.setWithdrawalHalding(amount);
|
|
|
|
|
+ }
|
|
|
|
|
+ if("2".equals(item.getAmountStatus())){ //非跟单
|
|
|
|
|
+ BigDecimal amount = item.getAmount();
|
|
|
|
|
+ sysUserAccountVo.setWithdrawalDocumentary(amount);
|
|
|
|
|
+ }
|
|
|
|
|
+ if("3".equals(item.getAmountStatus())){ //推广费
|
|
|
|
|
+ BigDecimal amount = item.getAmount();
|
|
|
|
|
+ sysUserAccountVo.setWithdrawalDocumentary(amount);
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void willPromotion(BigDecimal willPromotion, String userId) {
|
|
|
|
|
+ InsOrders InsOrders = insAreaCompanyService.selectPromotionBy(userId);
|
|
|
|
|
+ if(ObjectUtils.isNotEmpty(InsOrders)){
|
|
|
|
|
+ BigDecimal willFirstPremiums = InsOrders.getWillFirstPremiums();
|
|
|
|
|
+ BigDecimal willSecondPremiums = InsOrders.getWillSecondPremiums();
|
|
|
|
|
+ BigDecimal willThreePremiums = InsOrders.getWillThreePremiums();
|
|
|
|
|
+ willPromotion.add(willFirstPremiums).add(willThreePremiums).add(willSecondPremiums);
|
|
|
|
|
+
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
+ private void willAmount(String quoteno, BigDecimal willHalding, BigDecimal willDocumentary) {
|
|
|
|
|
+ InsFeeOrderNew insFeeOrderNew = insFeeOrderNewService.getInsFeeOrderNewByCompanyId(quoteno);
|
|
|
|
|
+ //交强手续费出口比例
|
|
|
|
|
+ BigDecimal jqExportProceduresFee = insFeeOrderNew.getJqPremium().multiply(insFeeOrderNew.getJqSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
|
|
+ //商业手续费出口比例
|
|
|
|
|
+ BigDecimal syExportProceduresFee = insFeeOrderNew.getSyPremium().multiply(insFeeOrderNew.getSySuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
|
|
+ //非车手续费出口比例
|
|
|
|
|
+ BigDecimal noExportProceduresFee = insFeeOrderNew.getNoPremium().multiply(insFeeOrderNew.getNoSuperviseCostsProportion().divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
|
|
+ //用户出口手续费
|
|
|
|
|
+ willHalding = willHalding.add(jqExportProceduresFee).add(syExportProceduresFee).add(noExportProceduresFee);
|
|
|
|
|
+
|
|
|
|
|
+ //非车出口比例
|
|
|
|
|
+ //总机构 交强管理比例
|
|
|
|
|
+ BigDecimal sumJqDeptProportion = insFeeOrderNew.getJqDeptProportionLevel1()
|
|
|
|
|
+ .add(insFeeOrderNew.getJqDeptProportionLevel2())
|
|
|
|
|
+ .add(insFeeOrderNew.getJqDeptProportionLevel3())
|
|
|
|
|
+ .add(insFeeOrderNew.getJqDeptProportionLevel4())
|
|
|
|
|
+ .add(insFeeOrderNew.getJqDeptProportionLevel5());
|
|
|
|
|
+
|
|
|
|
|
+ //总机构 商业管理比例
|
|
|
|
|
+ BigDecimal sumSyDeptProportion = insFeeOrderNew.getSyDeptProportionLevel1()
|
|
|
|
|
+ .add(insFeeOrderNew.getSyDeptProportionLevel2())
|
|
|
|
|
+ .add(insFeeOrderNew.getSyDeptProportionLevel3())
|
|
|
|
|
+ .add(insFeeOrderNew.getSyDeptProportionLevel4())
|
|
|
|
|
+ .add(insFeeOrderNew.getSyDeptProportionLevel5());
|
|
|
|
|
+
|
|
|
|
|
+ //总机构 非车管理比例
|
|
|
|
|
+ BigDecimal sumNoDeptProportion = insFeeOrderNew.getNoDeptProportionLevel1()
|
|
|
|
|
+ .add(insFeeOrderNew.getNoDeptProportionLevel2())
|
|
|
|
|
+ .add(insFeeOrderNew.getNoDeptProportionLevel3())
|
|
|
|
|
+ .add(insFeeOrderNew.getNoDeptProportionLevel4())
|
|
|
|
|
+ .add(insFeeOrderNew.getNoDeptProportionLevel5());
|
|
|
|
|
+ BigDecimal noExportProceduresProportion = new BigDecimal(0);
|
|
|
|
|
+ //总分销比例
|
|
|
|
|
+ BigDecimal sumRetail = insFeeOrderNew.getFirstDetailProportion().add(insFeeOrderNew.getSecondDetailProportion()).add(insFeeOrderNew.getThirdDetailProportion());
|
|
|
|
|
+ if(insFeeOrderNew.getNoCostsProportion().compareTo(sumNoDeptProportion.add(sumRetail))>0){
|
|
|
|
|
+ noExportProceduresProportion = insFeeOrderNew.getNoCostsProportion().subtract(sumNoDeptProportion).subtract(sumRetail);
|
|
|
|
|
+ }
|
|
|
|
|
+ //商业出口比例
|
|
|
|
|
+ BigDecimal syExportProceduresProportion = new BigDecimal(0);
|
|
|
|
|
+ if(insFeeOrderNew.getSyCostsProportion().compareTo(sumSyDeptProportion.add(sumRetail))>0){
|
|
|
|
|
+ syExportProceduresProportion = insFeeOrderNew.getSyCostsProportion().subtract(sumSyDeptProportion).subtract(sumRetail);
|
|
|
|
|
+ }
|
|
|
|
|
+ //交强出口比例
|
|
|
|
|
+ BigDecimal jqExportProceduresProportion = new BigDecimal(0);
|
|
|
|
|
+ if(insFeeOrderNew.getJqCostsProportion().compareTo(sumJqDeptProportion.add(sumRetail))>0){
|
|
|
|
|
+ jqExportProceduresProportion = insFeeOrderNew.getJqCostsProportion().subtract(sumJqDeptProportion).subtract(sumRetail);
|
|
|
|
|
+ }
|
|
|
|
|
+ //交强跟单出口费用
|
|
|
|
|
+ BigDecimal jqExportOtherFee = insFeeOrderNew.getJqPremium()
|
|
|
|
|
+ .multiply(jqExportProceduresProportion
|
|
|
|
|
+ .subtract(insFeeOrderNew.getJqSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
|
|
+
|
|
|
|
|
+ //商业跟单出口比例
|
|
|
|
|
+ BigDecimal syExportOtherFee = insFeeOrderNew.getSyPremium()
|
|
|
|
|
+ .multiply(syExportProceduresProportion
|
|
|
|
|
+ .subtract(insFeeOrderNew.getSySuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
|
|
+ //非车跟单出口比例
|
|
|
|
|
+ BigDecimal noExportOtherFee = insFeeOrderNew.getNoPremium()
|
|
|
|
|
+ .multiply(noExportProceduresProportion
|
|
|
|
|
+ .subtract(insFeeOrderNew.getNoSuperviseCostsProportion()).divide(new BigDecimal(100))).setScale(2,BigDecimal.ROUND_DOWN);
|
|
|
|
|
+ //用户出口跟单费
|
|
|
|
|
+ willDocumentary = willDocumentary.add(jqExportOtherFee).add(syExportOtherFee).add(noExportOtherFee);
|
|
|
|
|
+
|
|
|
|
|
+ }
|
|
|
|
|
+
|
|
|
|
|
|
|
|
}
|
|
}
|
|
|
|
|
|