lyh 1 жил өмнө
parent
commit
3e99242db8

+ 2 - 2
src/main/java/com/ydtech/modules/admin/controller/taskStatistics/TaskStatisticsController.java

@@ -481,7 +481,7 @@ public class TaskStatisticsController {
      * @date: 2024/11/19
      **/
     @PostMapping("getBusinessOrderDataDetails")
-    @ApiOperation(value = "控制台-业务数据-渠道-订单详情-详情")
+    @ApiOperation(value = "控制台-业务数据-电销-订单详情-详情")
     public HttpResult<PageInfo<BusinessOrderData>> getBusinessOrderDataDetails(@RequestBody TaskStatisticsVo taskStatisticsVo) {
         try {
             PageInfo<BusinessOrderData> businessOrderDataDetails = taskStatisticsService.getBusinessOrderDataDetails(taskStatisticsVo);
@@ -497,7 +497,7 @@ public class TaskStatisticsController {
      * @date: 2024/11/19
      **/
     @PostMapping("getBusinessOrderDataTotal")
-    @ApiOperation(value = "控制台-业务数据-渠道-订单详情-合计")
+    @ApiOperation(value = "控制台-业务数据-电销-订单详情-合计")
     public HttpResult<BusinessOrderData> getBusinessOrderDataTotal(@RequestBody TaskStatisticsVo taskStatisticsVo) {
         try {
             BusinessOrderData result = taskStatisticsService.getBusinessOrderDataTotal(taskStatisticsVo);

+ 0 - 3
src/main/java/com/ydtech/modules/admin/model/vo/BusinessAgentData.java

@@ -87,9 +87,6 @@ public class BusinessAgentData {
     @ApiModelProperty(value = "毛利润占比")
     private BigDecimal distributionAmountRate;
 
-    @ApiModelProperty(value = "毛利润率")
-    private String grossMargin;
-
     @ApiModelProperty(value = "入口金额")
     private BigDecimal entranceAllFee;
 

+ 0 - 3
src/main/java/com/ydtech/modules/admin/model/vo/BusinessOrderData.java

@@ -51,9 +51,6 @@ public class BusinessOrderData {
     @ApiModelProperty(value = "毛利润占比")
     private BigDecimal distributionAmountRate;
 
-    @ApiModelProperty(value = "毛利润率")
-    private String grossMargin;
-
     @ApiModelProperty(value = "入口金额")
     private BigDecimal entranceAllFee;
 

+ 34 - 42
src/main/java/com/ydtech/modules/admin/service/impl/TaskStatisticsServiceImpl.java

@@ -699,19 +699,9 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         List<BusinessAgentData> records = list.getRecords();
         for (BusinessAgentData record : records) {
             this.appendName(record);
-            //新增毛利润率   毛利润/成本(出口费用)
-            String grossMargin = "0.00%";
-            BigDecimal zreo = new BigDecimal("0");
-            BigDecimal distributionAmount = record.getDistributionAmount();
-            BigDecimal exportAllFee = record.getExportAllFee();
-            if (distributionAmount.compareTo(zreo) > 0 && exportAllFee.compareTo(zreo) > 0) {
-                BigDecimal grossMarginBD = distributionAmount.divide(exportAllFee, 4, RoundingMode.HALF_UP); //毛利润率
-                DecimalFormat decimalFormat = new DecimalFormat("0.00%");
-                grossMargin = decimalFormat.format(grossMarginBD);
-            } else if (distributionAmount.compareTo(zreo) > 0 && exportAllFee.compareTo(zreo) == 0) {
-                grossMargin = "100.00%";
+            if (record.getDistributionAmountRate() == null) {
+                record.setDistributionAmountRate(new BigDecimal("0.0000"));
             }
-            record.setGrossMargin(grossMargin);
         }
         Long  total = this.taskStatisticsMapper.getBusinessAgentDataTotal(taskStatisticsVo);
         list.setTotal(total);
@@ -1079,19 +1069,21 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
 
         PageHelper.startPage(taskStatisticsVo.getPageNum(), taskStatisticsVo.getPageSize());
         List<BusinessOrderData> businessOrderList = this.taskStatisticsMapper.getBusinessOrderDataDetails(taskStatisticsVo);
-        for (BusinessOrderData businessOrderData : businessOrderList) {
-            BigDecimal entranceAllFee = businessOrderData.getEntranceAllFee() != null ? businessOrderData.getEntranceAllFee() : BigDecimal.ZERO;
-            BigDecimal exportAllFee = businessOrderData.getExportAllFee() != null ? businessOrderData.getExportAllFee() : BigDecimal.ZERO;
-            BigDecimal distributionAmount = entranceAllFee.subtract(exportAllFee);
-            businessOrderData.setDistributionAmount(distributionAmount); //毛利润
-            if (distributionAmount.compareTo(BigDecimal.ZERO) > 0) {
-                //新增毛利润率   毛利润/成本(出口费用)
-                BigDecimal grossMarginBD = distributionAmount.divide(exportAllFee, 4, RoundingMode.HALF_UP); //毛利润率
-                DecimalFormat decimalFormat = new DecimalFormat("0.00%");
-                String grossMargin = decimalFormat.format(grossMarginBD);
-                businessOrderData.setGrossMargin(grossMargin);
-            } else {
-                businessOrderData.setGrossMargin("0.00%");
+        if (!com.ydtech.utils.StringUtils.isNullOrEmpty(businessOrderList) && !businessOrderList.isEmpty()) {
+            for (BusinessOrderData businessOrderData : businessOrderList) {
+                BigDecimal entranceAllFee = businessOrderData.getEntranceAllFee() != null ?
+                        businessOrderData.getEntranceAllFee().setScale(2, BigDecimal.ROUND_HALF_UP) : BigDecimal.ZERO;
+                BigDecimal exportAllFee = businessOrderData.getExportAllFee() != null ? businessOrderData.getExportAllFee() : BigDecimal.ZERO;
+                BigDecimal distributionAmount = entranceAllFee.subtract(exportAllFee);
+                businessOrderData.setDistributionAmount(distributionAmount); //毛利润
+                businessOrderData.setEntranceAllFee(entranceAllFee);
+                if(distributionAmount.compareTo(BigDecimal.ZERO) > 0
+                        && businessOrderData.getSumPremium().compareTo(BigDecimal.ZERO) > 0){
+                    BigDecimal resultDivided = distributionAmount.divide(businessOrderData.getSumPremium(), 4, RoundingMode.HALF_UP); //人均产能
+                    businessOrderData.setDistributionAmountRate(resultDivided);
+                }else {
+                    businessOrderData.setDistributionAmountRate(new BigDecimal("0.0000"));
+                }
             }
         }
         return new PageInfo<>(businessOrderList);
@@ -1109,11 +1101,14 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
 
         BusinessOrderData result = this.taskStatisticsMapper.getBusinessOrderDataTotal(taskStatisticsVo);
 
+        if (com.ydtech.utils.StringUtils.isNullOrEmpty(result)) {
+            return null;
+        }
         BigDecimal sumPremium = result.getSumPremium();
         BusinessAgentData allsumPremium = this.taskStatisticsMapper.getAllsumPremium(taskStatisticsVo);
         if (ObjectUtils.isNotEmpty(sumPremium)) {
             BigDecimal allSumPremium = allsumPremium.getSumPremium();
-            if (sumPremium.compareTo(BigDecimal.ZERO) == 1) {
+            if (sumPremium.compareTo(BigDecimal.ZERO) == 1 && allSumPremium.compareTo(BigDecimal.ZERO) > 0) {
                 BigDecimal multiply = sumPremium.divide(allSumPremium, 4, BigDecimal.ROUND_DOWN);
                 result.setSumPremiumProportion(multiply);
             }
@@ -1125,14 +1120,11 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
         BigDecimal exportAllFee = result.getExportAllFee() != null ? result.getExportAllFee() : BigDecimal.ZERO;
         BigDecimal subtract = entranceAllFee.subtract(exportAllFee);
         result.setDistributionAmount(subtract); //毛利润
-        if (subtract.compareTo(BigDecimal.ZERO) > 0) {
-            //新增毛利润率   毛利润/成本(出口费用)
-            BigDecimal grossMarginBD = subtract.divide(exportAllFee, 4, RoundingMode.HALF_UP); //毛利润率
-            DecimalFormat decimalFormat = new DecimalFormat("0.00%");
-            String grossMargin = decimalFormat.format(grossMarginBD);
-            result.setGrossMargin(grossMargin);
-        } else {
-            result.setGrossMargin(BigDecimal.ZERO.toString());
+        if(subtract.compareTo(BigDecimal.ZERO) > 0 && sumPremium.compareTo(BigDecimal.ZERO) > 0){
+            BigDecimal resultDivided = subtract.divide(sumPremium, 4, RoundingMode.HALF_UP); //人均产能
+            result.setDistributionAmountRate(resultDivided);
+        }else {
+            result.setDistributionAmountRate(new BigDecimal("0.0000"));
         }
         return result;
     }
@@ -1144,18 +1136,18 @@ public class TaskStatisticsServiceImpl  implements TaskStatisticsService {
      *  @Description:  通过时间类型判断
      */
     private static void getDateByType(String type, TaskStatisticsVo taskStatisticsVo) {
-        String  startDateStr= new String();
-        String  endDateStr= new String();
+        String  startDateStr = new String();
+        String  endDateStr = new String();
         if (StringUtils.isNotEmpty(type)) {
             switch (type) {
-                case "1" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),0)+" 00:00:00";
-                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                case "1" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),0) + " 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
                            break;
-                case "2" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),1)+" 00:00:00";
-                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                case "2" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),1) + " 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
                            break;
-                case "3" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),6)+" 00:00:00";
-                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0)+" 23:59:59";
+                case "3" : startDateStr= SliceUpDateUtil.getBeforeDay(new Date(),6) + " 00:00:00";
+                           endDateStr=SliceUpDateUtil.getBeforeDay(new Date(),0) + " 23:59:59";
                            break;
             }
             taskStatisticsVo.setSigningTimeStart(startDateStr);

+ 30 - 36
src/main/resources/mapper/modules/admin/TaskStatisticsMapper.xml

@@ -20,7 +20,6 @@
         IFNULL(a.riskCodeJshang,0) as "riskCodeJshang",
         IFNULL(a.riskCodeDs,0) as "riskCodeDs",
         IFNULL(a.riskCodeDsan,0) as "riskCodeDsan",
-        IFNULL(a.exportAllFee,0) as "exportAllFee",
         sd.management_source as "managementSource",
         IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)  as  "distributionAmount",
         (IFNULL(IFNULL(a.entranceAllFee,0) -IFNULL(a.exportAllFee,0),0)) / a.sumpremium as "distributionAmountRate"
@@ -446,27 +445,25 @@
             io.licenseno AS "car_num",
             su.id AS "user_id",
             su.name AS "user_name",
-            IFNULL(sum(jqpremium), 0) AS "jq_premium",
-            IFNULL(sum(sypremium), 0) AS "sy_premium",
-            IFNULL(sum(taxamount), 0) AS "tax_amount",
-            IFNULL(sum(jypremium), 0) AS "jy_premium",
-            (IFNULL(sum(jqpremium), 0) + IFNULL(sum(sypremium), 0) + IFNULL(sum(jypremium), 0)) AS "sum_premium",
-            ROUND(sum(IFNULL(ifon.jq_costs_premiums, 0) + IFNULL(ifon.sy_costs_premiums, 0)
-                + IFNULL(ifon.no_costs_premiums, 0)), 2) AS "entrance_all_fee",
-            ROUND(sum(IFNULL(jq_export_other_costs_premiums, 0) + IFNULL(jq_export_supervise_costs_premiums, 0)
-                + IFNULL(sy_export_other_costs_premiums, 0) + IFNULL(sy_export_supervise_costs_premiums, 0)
-                + IFNULL(no_export_other_costs_premiums, 0) + IFNULL(no_export_supervise_costs_premiums, 0)), 2) AS "export_all_fee"
+            IFNULL(SUM(iac.jqpremium), 0) AS "jq_premium",
+            IFNULL(SUM(iac.sypremium), 0) AS "sy_premium",
+            IFNULL(SUM(iac.taxamount), 0) AS "tax_amount",
+            IFNULL(SUM(iac.jypremium), 0) AS "jy_premium",
+            (IFNULL(SUM(iac.jqpremium), 0) + IFNULL(SUM(iac.sypremium), 0) + IFNULL(SUM(iac.jypremium), 0)) AS "sum_premium",
+            SUM(IFNULL(ifon.jq_costs_premiums, 0) + IFNULL(ifon.sy_costs_premiums, 0) + IFNULL(ifon.no_costs_premiums, 0)) AS "entrance_all_fee",
+            SUM(IFNULL(ifon.jq_export_other_costs_premiums, 0) + IFNULL(ifon.jq_export_supervise_costs_premiums, 0)
+                + IFNULL(ifon.sy_export_other_costs_premiums, 0) + IFNULL(ifon.sy_export_supervise_costs_premiums, 0)
+                + IFNULL(ifon.no_export_other_costs_premiums, 0) + IFNULL(ifon.no_export_supervise_costs_premiums, 0)) AS "export_all_fee"
         FROM ins_area_company iac
-                 LEFT JOIN ins_orders io ON io.orderno = iac.orderno
-                 LEFT JOIN sys_user su ON io.userid = su.id
-                 LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
+            LEFT JOIN ins_orders io ON io.orderno = iac.orderno
+            LEFT JOIN sys_user su ON io.userid = su.id
+            LEFT JOIN ins_fee_order_new ifon ON iac.id = ifon.ins_order_no
     </sql>
 
     <select id="getBusinessOrderDataDetails" resultMap="OrderDataMap">
         <include refid="BusinessOrderDataSQL"/>
         <where>
             iac.orderstatus = '3'
-            AND io.orderstatus = '3'
             <if test="vo.userId != null and vo.userId!=''">
                 AND su.id = #{vo.userId}
             </if>
@@ -485,35 +482,32 @@
 
     <select id="getBusinessOrderDataTotal" resultMap="OrderDataMap">
         SELECT
-            count(*) AS `total`,
+            COUNT(*) AS `total`,
             IFNULL(SUM(a.jq_premium), 0) AS `jq_premium`,
             IFNULL(SUM(a.sy_premium), 0) AS `sy_premium`,
-            IFNULL(SUM(a.tax_amount), 0) AS `tax_amount`,
             IFNULL(SUM(a.jy_premium), 0) AS `jy_premium`,
-            sum(IFNULL(a.jq_premium, 0) + IFNULL(a.sy_premium, 0) + IFNULL(a.jy_premium, 0)) as `sum_premium`,
-            IFNULL(SUM(a.entrance_all_fee), 0) AS `entrance_all_fee`,
-            IFNULL(SUM(a.export_all_fee), 0) AS `export_all_fee`
+            IFNULL(SUM(a.tax_amount), 0) AS `tax_amount`,
+            SUM(IFNULL(a.jq_premium, 0) + IFNULL(a.sy_premium, 0) + IFNULL(a.jy_premium, 0)) AS `sum_premium`,
+            ROUND(IFNULL(SUM(a.entrance_all_fee),0),2) AS `entrance_all_fee`,
+            ROUND(IFNULL(SUM(a.export_all_fee),0),2) AS `export_all_fee`
         FROM (
         <include refid="BusinessOrderDataSQL"/>
         <where>
-                iac.orderstatus = '3'
-                AND io.orderstatus = '3'
-                <if test="vo.userId != null and vo.userId!=''">
-                    AND su.id = #{vo.userId}
-                </if>
-                <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
-                    AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d')
-                    AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
-                </if>
-                <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
-                    AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d')
-                    AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
-                </if>
-            </where>
+            iac.orderstatus = '3'
+            <if test="vo.userId != null and vo.userId!=''">
+                AND su.id = #{vo.userId}
+            </if>
+            <if test="vo.signingTimeStart != null and vo.signingTimeStart!='' and vo.signingTimeEnd != null and vo.signingTimeEnd != ''">
+                AND DATE_FORMAT(iac.signing_time, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.signingTimeStart}, '%Y-%m-%d')
+                AND DATE_FORMAT(#{vo.signingTimeEnd}, '%Y-%m-%d')
+            </if>
+            <if test="vo.enterTimeStart != null and vo.enterTimeStart!='' and vo.enterTimeEnd != null and vo.enterTimeEnd != ''">
+                AND DATE_FORMAT(iac.createtime, '%Y-%m-%d') BETWEEN DATE_FORMAT(#{vo.enterTimeStart}, '%Y-%m-%d')
+                AND DATE_FORMAT(#{vo.enterTimeEnd}, '%Y-%m-%d')
+            </if>
+        </where>
             GROUP BY
                 io.orderno) a
-        GROUP BY
-            a.user_id
     </select>
 
 </mapper>