Browse Source

修改分销逻辑
处理订单详情看不到分销员的问题
处理分销明细动态显示业务员姓名 手机号

Qchen 2 tuần trước cách đây
mục cha
commit
a048ecc6db

+ 8 - 0
commons/src/main/java/com/jzg/commons/entity/vo/DistributionCommissionDetailVo.java

@@ -3,6 +3,7 @@ package com.jzg.commons.entity.vo;
 import com.alibaba.excel.annotation.ExcelIgnore;
 import com.alibaba.excel.annotation.ExcelProperty;
 import com.jzg.commons.core.base.PageRequest;
+import io.swagger.v3.oas.annotations.media.Schema;
 import lombok.Data;
 
 /**
@@ -84,4 +85,11 @@ public class DistributionCommissionDetailVo extends PageRequest {
      */
     @ExcelProperty(value = "分销比例")
     private String distributionRatio;
+
+    /**
+     *
+     */
+    @Schema(description = "租户code")
+    @ExcelIgnore
+    private String systemCode;
 }

+ 13 - 11
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/aop/aspect/QuoteVerificationAspect.java

@@ -807,10 +807,11 @@ public class QuoteVerificationAspect {
             HttpResult<SysUserJzgInfo> referrerInfoResult = orgClient.getUserInfo(referrer.getReferrerId());
             if (referrerInfoResult.getData() != null && "1".equals(referrerInfoResult.getData().getIsDistribution())) {
                 String distributorId = referrer.getReferrerId();
+                BigDecimal commissionRatio1 = setting.getCommissionRatioLevel1().divide(new BigDecimal(100)).setScale(5, RoundingMode.DOWN);
                 insFeeOrders.setFirstDistributorId(distributorId);
-                BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel1()).setScale(5,RoundingMode.DOWN));
-                insFeeOrders.setFirstDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel1()).setScale(2,RoundingMode.DOWN));
-                insFeeOrders.setFirstDistributionRatio(setting.getCommissionRatioLevel1().multiply(new BigDecimal(100)));
+                BigDecimal fee_5 = (totalPremium.multiply(commissionRatio1).setScale(5,RoundingMode.DOWN));
+                insFeeOrders.setFirstDistributionFee(totalPremium.multiply(commissionRatio1).setScale(2,RoundingMode.DOWN));
+                insFeeOrders.setFirstDistributionRatio(commissionRatio1.multiply(new BigDecimal(100)));
                 BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getFirstDistributionFee());
                 Map map = new HashMap();
                 map.put("id",distributorId);
@@ -836,10 +837,11 @@ public class QuoteVerificationAspect {
             HttpResult<SysUserJzgInfo> referrerInfoResult = orgClient.getUserInfo(referrer.getReferrerId());
             if (referrerInfoResult.getData() != null && "1".equals(referrerInfoResult.getData().getIsDistribution())) {
                 String distributorId = referrer.getReferrerId();
+                BigDecimal commissionRatio2 = setting.getCommissionRatioLevel2().divide(new BigDecimal(100)).setScale(5, RoundingMode.DOWN);
                 insFeeOrders.setSecondDistributorId(distributorId);
-                BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel2()).setScale(5,RoundingMode.DOWN));
-                insFeeOrders.setSecondDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel2()).setScale(2,RoundingMode.DOWN));
-                insFeeOrders.setSecondDistributionRatio(setting.getCommissionRatioLevel2().multiply(new BigDecimal(100)));
+                BigDecimal fee_5 = (totalPremium.multiply(commissionRatio2).setScale(5,RoundingMode.DOWN));
+                insFeeOrders.setSecondDistributionFee(totalPremium.multiply(commissionRatio2).setScale(2,RoundingMode.DOWN));
+                insFeeOrders.setSecondDistributionRatio(commissionRatio2.multiply(new BigDecimal(100)));
                 BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getSecondDistributionFee());
                 Map map = new HashMap();
                 map.put("id",distributorId);
@@ -862,12 +864,12 @@ public class QuoteVerificationAspect {
         if (referrerResult.getData() != null) {
             EsmUserReferrer referrer = referrerResult.getData();
             HttpResult<SysUserJzgInfo> referrerInfoResult = orgClient.getUserInfo(referrer.getReferrerId());
-            if (referrerInfoResult.getData() != null
-                    && "1".equals(referrerInfoResult.getData().getIsDistribution())) {
+            if (referrerInfoResult.getData() != null && "1".equals(referrerInfoResult.getData().getIsDistribution())) {
                 insFeeOrders.setThirdDistributorId(referrer.getReferrerId());
-                BigDecimal fee_5 = (totalPremium.multiply(setting.getCommissionRatioLevel3()).setScale(5,RoundingMode.DOWN));
-                insFeeOrders.setThirdDistributionFee(totalPremium.multiply(setting.getCommissionRatioLevel3()).setScale(2,RoundingMode.DOWN));
-                insFeeOrders.setThirdDistributionRatio(setting.getCommissionRatioLevel3().multiply(new BigDecimal(100)));
+                BigDecimal commissionRatio3 = setting.getCommissionRatioLevel3().divide(new BigDecimal(100)).setScale(5, RoundingMode.DOWN);
+                BigDecimal fee_5 = (totalPremium.multiply(commissionRatio3).setScale(5,RoundingMode.DOWN));
+                insFeeOrders.setThirdDistributionFee(totalPremium.multiply(commissionRatio3).setScale(2,RoundingMode.DOWN));
+                insFeeOrders.setThirdDistributionRatio(commissionRatio3.multiply(new BigDecimal(100)));
                 BigDecimal diffAmount = fee_5.subtract(insFeeOrders.getThirdDistributionFee());
                 return diffAmount;
             } else {

+ 42 - 24
tenant/insurance/quotation-summary/src/main/java/com/jzg/quotation/summary/service/impl/InsOrdersServiceImpl.java

@@ -861,20 +861,26 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>().eq(InsFeeOrders::getOrderNo, insOrdersVo.getInsOrders().getId()));
         // 比例信息 分销员信息
         if (insFeeOrders != null) {
-            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null && insFeeOrders.getThirdDistributorId() != null) {
-                HttpResult<SysUserJzgInfo> firstDistributor = orgClient.getUserInfoById(insFeeOrders.getFirstDistributorId());
-                HttpResult<SysUserJzgInfo> secondDistributor = orgClient.getUserInfoById(insFeeOrders.getSecondDistributorId());
-                HttpResult<SysUserJzgInfo> thirdDistributor = orgClient.getUserInfoById(insFeeOrders.getThirdDistributorId());
-                if (firstDistributor.getData() != null) {
+            String firstId = insFeeOrders.getFirstDistributorId();
+            String secondId = insFeeOrders.getSecondDistributorId();
+            String thirdId = insFeeOrders.getThirdDistributorId();
+
+            if (firstId != null || secondId != null || thirdId != null) {
+                HttpResult<SysUserJzgInfo> firstDistributor =
+                        Optional.ofNullable(firstId).map(orgClient::getUserInfoById).orElse(null);
+                HttpResult<SysUserJzgInfo> secondDistributor =
+                        Optional.ofNullable(secondId).map(orgClient::getUserInfoById).orElse(null);
+                HttpResult<SysUserJzgInfo> thirdDistributor =
+                        Optional.ofNullable(thirdId).map(orgClient::getUserInfoById).orElse(null);
+                if (firstDistributor != null && firstDistributor.getData() != null) {
                     insFeeOrders.setFirstDistributorName(firstDistributor.getData().getName());
                 }
-                if (secondDistributor.getData() != null) {
+                if (secondDistributor != null && secondDistributor.getData() != null) {
                     insFeeOrders.setSecondDistributorName(secondDistributor.getData().getName());
                 }
-                if (thirdDistributor.getData() != null) {
+                if (thirdDistributor != null && thirdDistributor.getData() != null) {
                     insFeeOrders.setThirdDistributorName(thirdDistributor.getData().getName());
                 }
-
             }
             insOrdersVo.setCostRatio(new PtlAgreementCostRatioVo(insFeeOrders));
             insOrdersVo.setFeeOrdersVo(new InsFeeOrdersVo(insFeeOrders));
@@ -1012,20 +1018,26 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
         InsFeeOrders insFeeOrders = insFeeOrdersMapper.selectOne(new LambdaQueryWrapper<InsFeeOrders>().eq(InsFeeOrders::getOrderNo, insOrdersVo.getInsOrders().getId()));
         // 比例信息 分销员信息
         if (insFeeOrders != null) {
-            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null && insFeeOrders.getThirdDistributorId() != null) {
-                HttpResult<SysUserJzgInfo> firstDistributor = orgClient.getUserInfoById(insFeeOrders.getFirstDistributorId());
-                HttpResult<SysUserJzgInfo> secondDistributor = orgClient.getUserInfoById(insFeeOrders.getSecondDistributorId());
-                HttpResult<SysUserJzgInfo> thirdDistributor = orgClient.getUserInfoById(insFeeOrders.getThirdDistributorId());
-                if (firstDistributor.getData() != null) {
+            String firstId = insFeeOrders.getFirstDistributorId();
+            String secondId = insFeeOrders.getSecondDistributorId();
+            String thirdId = insFeeOrders.getThirdDistributorId();
+
+            if (firstId != null || secondId != null || thirdId != null) {
+                HttpResult<SysUserJzgInfo> firstDistributor =
+                        Optional.ofNullable(firstId).map(orgClient::getUserInfoById).orElse(null);
+                HttpResult<SysUserJzgInfo> secondDistributor =
+                        Optional.ofNullable(secondId).map(orgClient::getUserInfoById).orElse(null);
+                HttpResult<SysUserJzgInfo> thirdDistributor =
+                        Optional.ofNullable(thirdId).map(orgClient::getUserInfoById).orElse(null);
+                if (firstDistributor != null && firstDistributor.getData() != null) {
                     insFeeOrders.setFirstDistributorName(firstDistributor.getData().getName());
                 }
-                if (secondDistributor.getData() != null) {
+                if (secondDistributor != null && secondDistributor.getData() != null) {
                     insFeeOrders.setSecondDistributorName(secondDistributor.getData().getName());
                 }
-                if (thirdDistributor.getData() != null) {
+                if (thirdDistributor != null && thirdDistributor.getData() != null) {
                     insFeeOrders.setThirdDistributorName(thirdDistributor.getData().getName());
                 }
-
             }
             insOrdersVo.setCostRatio(new PtlAgreementCostRatioVo(insFeeOrders));
             insOrdersVo.setFeeOrdersVo(new InsFeeOrdersVo(insFeeOrders));
@@ -2079,21 +2091,27 @@ public class InsOrdersServiceImpl extends ServiceImpl<InsOrdersMapper, InsOrders
 
         // 比例信息 分销员信息
         if (insFeeOrders != null) {
-            if (insFeeOrders.getFirstDistributorId() != null && insFeeOrders.getSecondDistributorId() != null && insFeeOrders.getThirdDistributorId() != null) {
-                HttpResult<SysUserJzgInfo> firstDistributor = orgClient.getUserInfoById(insFeeOrders.getFirstDistributorId());
-                HttpResult<SysUserJzgInfo> secondDistributor = orgClient.getUserInfoById(insFeeOrders.getSecondDistributorId());
-                HttpResult<SysUserJzgInfo> thirdDistributor = orgClient.getUserInfoById(insFeeOrders.getThirdDistributorId());
-                if (firstDistributor.getData() != null) {
+            String firstId = insFeeOrders.getFirstDistributorId();
+            String secondId = insFeeOrders.getSecondDistributorId();
+            String thirdId = insFeeOrders.getThirdDistributorId();
+
+            if (firstId != null || secondId != null || thirdId != null) {
+                HttpResult<SysUserJzgInfo> firstDistributor =
+                        Optional.ofNullable(firstId).map(orgClient::getUserInfoById).orElse(null);
+                HttpResult<SysUserJzgInfo> secondDistributor =
+                        Optional.ofNullable(secondId).map(orgClient::getUserInfoById).orElse(null);
+                HttpResult<SysUserJzgInfo> thirdDistributor =
+                        Optional.ofNullable(thirdId).map(orgClient::getUserInfoById).orElse(null);
+                if (firstDistributor != null && firstDistributor.getData() != null) {
                     insFeeOrders.setFirstDistributorName(firstDistributor.getData().getName());
                 }
-                if (secondDistributor.getData() != null) {
+                if (secondDistributor != null && secondDistributor.getData() != null) {
                     insFeeOrders.setSecondDistributorName(secondDistributor.getData().getName());
                 }
-                if (thirdDistributor.getData() != null) {
+                if (thirdDistributor != null && thirdDistributor.getData() != null) {
                     insFeeOrders.setThirdDistributorName(thirdDistributor.getData().getName());
                 }
             }
-
             resultVo.setCostRatio(new PtlAgreementCostRatioVo(insFeeOrders));
             resultVo.setInsFeeOrders(new InsFeeOrdersVo(insFeeOrders));
         }

+ 4 - 0
tenant/organization/src/main/java/com/jzg/organization/service/impl/SysDistributionSettingServiceImpl.java

@@ -210,11 +210,15 @@ public class SysDistributionSettingServiceImpl extends ServiceImpl<SysDistributi
 
     @Override
     public Page<DistributionCommissionDetailVo> commissionDetails(Page page, DistributionCommissionDetailVo distributionCommissionDetailVo) {
+        String systemCode = baseController.getSystemCode();
+        distributionCommissionDetailVo.setSystemCode(systemCode);
         return sysDistributionSettingMapper.commissionDetails(page,distributionCommissionDetailVo);
     }
 
     @Override
     public void exportCommissionDetailsExcel(Page page, DistributionCommissionDetailVo distributionCommissionDetailVo) {
+        String systemCode = baseController.getSystemCode();
+        distributionCommissionDetailVo.setSystemCode(systemCode);
         Page<DistributionCommissionDetailVo> pageResult = sysDistributionSettingMapper.commissionDetails(page,distributionCommissionDetailVo);
         pageResult.getRecords().forEach(item->{
             if (item.getDistributionLevel().equals("1")) {

+ 14 - 5
tenant/organization/src/main/resources/mapper/SysDistributionSettingMapper.xml

@@ -90,7 +90,7 @@
         t.orderNo,
         t.premium,
         t.salesman,
-        su_sales.mobile AS salesmanMobile,
+        t.salesmanMobile,
         t.signingTime,
         t.distributor,
         t.distributorMobile,
@@ -102,7 +102,8 @@
         SELECT
         ifo.order_no AS orderNo,
         ifo.total_premium AS premium,
-        io.real_quote_user_id AS salesman,
+        suji2.name AS salesman,
+        su2.mobile as salesmanMobile,
         io.signing_time AS signingTime,
         suji.name AS distributor,
         su.mobile AS distributorMobile,
@@ -114,6 +115,8 @@
         INNER JOIN ins_orders io ON ifo.order_no = io.id
         LEFT JOIN sys_user_jzg_info suji ON ifo.first_distributor_id = suji.id AND suji.is_delete = 0
         LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
+        LEFT JOIN sys_user su2 ON su2.mobile = io.real_quote_user_id
+        LEFT JOIN sys_user_jzg_info suji2 ON suji2.user_id = su2.id and suji2.system_code = #{distributionCommissionDetailVo.systemCode}
         WHERE ifo.is_delete = 0
         AND ifo.first_distributor_id IS NOT NULL
         <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
@@ -129,7 +132,8 @@
         SELECT
         ifo.order_no AS orderNo,
         ifo.total_premium AS premium,
-        io.real_quote_user_id AS salesman,
+        suji2.name AS salesman,
+        su2.mobile as salesmanMobile,
         io.signing_time AS signingTime,
         suji.name AS distributor,
         su.mobile AS distributorMobile,
@@ -141,6 +145,8 @@
         INNER JOIN ins_orders io ON ifo.order_no = io.id
         LEFT JOIN sys_user_jzg_info suji ON ifo.second_distributor_id = suji.id AND suji.is_delete = 0
         LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
+        LEFT JOIN sys_user su2 ON su2.mobile = io.real_quote_user_id
+        LEFT JOIN sys_user_jzg_info suji2 ON suji2.user_id = su2.id and suji2.system_code = #{distributionCommissionDetailVo.systemCode}
         WHERE ifo.is_delete = 0
         AND ifo.second_distributor_id IS NOT NULL
         <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
@@ -156,7 +162,8 @@
         SELECT
         ifo.order_no AS orderNo,
         ifo.total_premium AS premium,
-        io.real_quote_user_id AS salesman,
+        suji2.name AS salesman,
+        su2.mobile as salesmanMobile,
         io.signing_time AS signingTime,
         suji.name AS distributor,
         su.mobile AS distributorMobile,
@@ -168,6 +175,8 @@
         INNER JOIN ins_orders io ON ifo.order_no = io.id
         LEFT JOIN sys_user_jzg_info suji ON ifo.third_distributor_id = suji.id AND suji.is_delete = 0
         LEFT JOIN sys_user su ON su.id = suji.user_id AND su.is_delete = 0
+        LEFT JOIN sys_user su2 ON su2.mobile = io.real_quote_user_id
+        LEFT JOIN sys_user_jzg_info suji2 ON suji2.user_id = su2.id and suji2.system_code = #{distributionCommissionDetailVo.systemCode}
         WHERE ifo.is_delete = 0
         AND ifo.third_distributor_id IS NOT NULL
         <if test="distributionCommissionDetailVo.distributor != null and distributionCommissionDetailVo.distributor != ''">
@@ -177,7 +186,7 @@
             AND su.mobile = #{distributionCommissionDetailVo.distributorMobile}
         </if>
         ) t
-        LEFT JOIN sys_user su_sales ON su_sales.id = t.salesman AND su_sales.is_delete = 0
+--         LEFT JOIN sys_user su_sales ON su_sales.id = t.salesman AND su_sales.is_delete = 0
         WHERE 1 = 1
         <if test="distributionCommissionDetailVo.signingTimeStart != null and distributionCommissionDetailVo.signingTimeEnd != null">
             AND t.signingTime BETWEEN #{distributionCommissionDetailVo.signingTimeStart}