diff --git a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxFanStatisticsController.java b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxFanStatisticsController.java
index db4a6e863..877b43331 100644
--- a/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxFanStatisticsController.java
+++ b/stdiet-admin/src/main/java/com/stdiet/web/controller/custom/SysWxFanStatisticsController.java
@@ -1,16 +1,16 @@
 package com.stdiet.web.controller.custom;
 
-import java.util.ArrayList;
-import java.util.HashMap;
-import java.util.List;
-import java.util.Map;
+import java.math.BigDecimal;
+import java.util.*;
 
 import com.stdiet.common.utils.DateUtils;
 import com.stdiet.custom.domain.SysWxDistribution;
 import com.stdiet.custom.dto.request.FanStatisticsRequest;
 import com.stdiet.custom.dto.response.ExportFanStatisticsResponse;
+import com.stdiet.custom.service.ISysImportFanRecordService;
 import com.stdiet.custom.service.ISysWxDistributionService;
 import com.stdiet.framework.web.domain.server.Sys;
+import io.swagger.models.auth.In;
 import org.aspectj.weaver.loadtime.Aj;
 import org.springframework.security.access.prepost.PreAuthorize;
 import org.springframework.beans.factory.annotation.Autowired;
@@ -40,6 +40,9 @@ public class SysWxFanStatisticsController extends BaseController
     @Autowired
     private ISysWxDistributionService sysWxDistributionService;
 
+    @Autowired
+    private ISysImportFanRecordService sysImportFanRecordService;
+
     /**
      * 查询进粉统计列表
      */
@@ -153,4 +156,78 @@ public class SysWxFanStatisticsController extends BaseController
         List<SysWxDistribution> list = sysWxDistributionService.selectDistributionWxByUserId(userId);
         return AjaxResult.success(list);
     }
+
+    /**
+     * 获取导粉通过率
+     */
+    @RequestMapping("/getImportFanPassRate")
+    public AjaxResult getImportFanPassRate(SysWxFanStatistics sysWxFanStatistics){
+        List<Map<String,Object>> passList = sysWxFanStatisticsService.getTotalFanNumGroupByChannel(sysWxFanStatistics);
+        List<Map<String,Object>> importList = sysImportFanRecordService.getTotalFanNumGroupByChannel(sysWxFanStatistics);
+        List<Map<String,Object>> resultList = new ArrayList<>();
+        List<Integer> channelIdList = new ArrayList<>();
+        for (Map<String,Object> map : passList) {
+            Integer channelId = (Integer)map.get("channelId");
+            if(channelId != null && !channelIdList.contains(channelId)){
+                channelIdList.add(channelId);
+            }
+        }
+        for (Map<String,Object> map : importList) {
+            Integer channelId = (Integer)map.get("channelId");
+            if(channelId != null && !channelIdList.contains(channelId)){
+                channelIdList.add(channelId);
+            }
+        }
+        Double allTotalImportFanNum = 0.0;
+        Double allTotalPassFanNum = 0.0;
+        for (Integer channelId : channelIdList) {
+            //根据渠道ID查询导粉记录
+            Map<String,Object> importMap = getMap(importList, channelId);
+            Map<String,Object> passMap = getMap(passList, channelId);
+            if(importMap != null || passMap != null){
+                BigDecimal totalImportFanNum = new BigDecimal(0);
+                BigDecimal totalPassFanNum = new BigDecimal(0);
+                String channelName = "";
+                if(importMap != null){
+                    totalImportFanNum = importMap.get("totalFanNum") != null ? (BigDecimal) importMap.get("totalFanNum") : new BigDecimal(0);
+                    channelName = (String)importMap.get("channelName");
+                }
+                if(passMap != null){
+                    totalPassFanNum = passMap.get("totalFanNum") != null ? (BigDecimal) passMap.get("totalFanNum") : new BigDecimal(0);
+                    channelName = (String)passMap.get("channelName");
+                }
+                if(totalImportFanNum.doubleValue() == 0 && totalPassFanNum.doubleValue() == 0){
+                    continue;
+                }
+                allTotalImportFanNum += totalImportFanNum.doubleValue();
+                allTotalPassFanNum += totalPassFanNum.doubleValue();
+                Map<String, Object> rateMap = new HashMap<>();
+                rateMap.put("channelName", channelName);
+                rateMap.put("totalImportFanNum", totalImportFanNum);
+                rateMap.put("totalPassFanNum", totalPassFanNum);
+                BigDecimal passRate = totalImportFanNum.doubleValue() > 0 ? new BigDecimal(totalPassFanNum.doubleValue()*100/totalImportFanNum.doubleValue()).setScale(1, BigDecimal.ROUND_HALF_UP) : new BigDecimal(100);
+                rateMap.put("passRate", passRate.doubleValue() > 100 ? 100 : passRate);
+                resultList.add(rateMap);
+            }
+        }
+        if(resultList.size() > 0){
+            Map<String,Object> total = new HashMap<>();
+            total.put("channelName", "总计");
+            total.put("totalImportFanNum", allTotalImportFanNum);
+            total.put("totalPassFanNum", allTotalPassFanNum);
+            BigDecimal totalPassRate = allTotalImportFanNum > 0 ? new BigDecimal(allTotalPassFanNum*100/allTotalImportFanNum).setScale(1, BigDecimal.ROUND_HALF_UP) : new BigDecimal(100);
+            total.put("passRate", totalPassRate.doubleValue() > 100 ? 100 : totalPassRate);
+            resultList.add(total);
+        }
+        return AjaxResult.success(resultList);
+    }
+
+    private Map<String,Object> getMap(List<Map<String,Object>> list, Integer channelId){
+        for (Map<String,Object> map : list) {
+            if(map.get("channelId") != null && ((Integer) map.get("channelId")).intValue() == channelId.intValue()){
+                return map;
+            }
+        }
+        return null;
+    }
 }
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java
index 42a83f3c9..f11febb0e 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysImportFanRecordMapper.java
@@ -1,7 +1,10 @@
 package com.stdiet.custom.mapper;
 
 import java.util.List;
+import java.util.Map;
+
 import com.stdiet.custom.domain.SysImportFanRecord;
+import com.stdiet.custom.domain.SysWxFanStatistics;
 
 /**
  * 导粉管理Mapper接口
@@ -68,4 +71,11 @@ public interface SysImportFanRecordMapper
 
     //查询总导粉数量
     int selectTotalSysImportFanNum(SysImportFanRecord sysImportFanRecord);
+
+    /**
+     * 根据时间范围统计各个渠道的总导粉数量
+     * @param sysWxFanStatistics
+     * @return
+     */
+    List<Map<String,Object>> getTotalFanNumGroupByChannel(SysWxFanStatistics sysWxFanStatistics);
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java
index 534a39ae5..13b56752a 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysRecipesMapper.java
@@ -3,6 +3,7 @@ package com.stdiet.custom.mapper;
 import com.stdiet.custom.domain.SysRecipes;
 import com.stdiet.custom.domain.SysRecipesDaily;
 import com.stdiet.custom.domain.SysRecipesDailyDishes;
+import org.apache.ibatis.annotations.Param;
 
 import java.util.List;
 
@@ -33,4 +34,8 @@ public interface SysRecipesMapper {
     public List<SysRecipesDailyDishes> selectDishesByMenuId(Long id);
 
     public List<SysRecipesDailyDishes> selectDishesByMenuIdShow(Long id);
+
+    List<SysRecipesDaily> getRecipesListByRecipesId(@Param("recipesId")Long id);
+
+    int updateRecipesById(SysRecipesDaily sysRecipesDaily);
 }
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxFanStatisticsMapper.java b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxFanStatisticsMapper.java
index 1d3a7f717..cf74e828f 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxFanStatisticsMapper.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/mapper/SysWxFanStatisticsMapper.java
@@ -3,6 +3,7 @@ package com.stdiet.custom.mapper;
 import com.stdiet.custom.domain.SysWxFanStatistics;
 
 import java.util.List;
+import java.util.Map;
 
 /**
  * 进粉统计Mapper接口
@@ -73,4 +74,11 @@ public interface SysWxFanStatisticsMapper {
     public int selectFanNumCount(SysWxFanStatistics sysWxFanStatistics);
 
     public List<SysWxFanStatistics> exportStatisticsList(SysWxFanStatistics sysWxFanStatistics);
+
+    /**
+     * 根据时间范围统计每个渠道的进粉数量
+     * @param sysWxFanStatistics
+     * @return
+     */
+    public List<Map<String,Object>> getTotalFanNumGroupByChannel(SysWxFanStatistics sysWxFanStatistics);
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanRecordService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanRecordService.java
index d2b370823..6e7bd8608 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanRecordService.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysImportFanRecordService.java
@@ -1,7 +1,10 @@
 package com.stdiet.custom.service;
 
 import java.util.List;
+import java.util.Map;
+
 import com.stdiet.custom.domain.SysImportFanRecord;
+import com.stdiet.custom.domain.SysWxFanStatistics;
 
 /**
  * 导粉管理Service接口
@@ -61,4 +64,11 @@ public interface ISysImportFanRecordService
 
     //查询总导粉数量
     int selectTotalSysImportFanNum(SysImportFanRecord sysImportFanRecord);
+
+    /**
+     * 根据时间范围统计各个渠道的总导粉数量
+     * @param sysWxFanStatistics
+     * @return
+     */
+    List<Map<String,Object>> getTotalFanNumGroupByChannel(SysWxFanStatistics sysWxFanStatistics);
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxFanStatisticsService.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxFanStatisticsService.java
index ebeef03f9..c59f61ed2 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxFanStatisticsService.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/ISysWxFanStatisticsService.java
@@ -1,6 +1,7 @@
 package com.stdiet.custom.service;
 
 import java.util.List;
+import java.util.Map;
 
 import com.stdiet.common.core.domain.AjaxResult;
 import com.stdiet.custom.domain.SysWxFanStatistics;
@@ -84,4 +85,11 @@ public interface ISysWxFanStatisticsService
     public int selectFanNumCount(SysWxFanStatistics sysWxFanStatistics);
 
     List<SysWxFanStatistics> exportStatisticsList(SysWxFanStatistics sysWxFanStatistics);
+
+    /**
+     * 根据时间范围统计每个渠道的进粉数量
+     * @param sysWxFanStatistics
+     * @return
+     */
+    public List<Map<String,Object>> getTotalFanNumGroupByChannel(SysWxFanStatistics sysWxFanStatistics);
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java
index 362353db3..780e5bcb9 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysImportFanRecordServiceImpl.java
@@ -2,8 +2,11 @@ package com.stdiet.custom.service.impl;
 
 import java.util.Date;
 import java.util.List;
+import java.util.Map;
+
 import com.stdiet.common.utils.DateUtils;
 import com.stdiet.custom.domain.SysImportFanWxAccount;
+import com.stdiet.custom.domain.SysWxFanStatistics;
 import com.stdiet.custom.service.ISysImportFanWxAccountService;
 import org.springframework.beans.factory.annotation.Autowired;
 import org.springframework.stereotype.Service;
@@ -138,4 +141,13 @@ public class SysImportFanRecordServiceImpl implements ISysImportFanRecordService
     public int selectTotalSysImportFanNum(SysImportFanRecord sysImportFanRecord){
         return sysImportFanRecordMapper.selectTotalSysImportFanNum(sysImportFanRecord);
     }
+
+    /**
+     * 根据时间范围统计各个渠道的总导粉数量
+     * @param sysWxFanStatistics
+     * @return
+     */
+    public List<Map<String,Object>> getTotalFanNumGroupByChannel(SysWxFanStatistics sysWxFanStatistics){
+        return sysImportFanRecordMapper.getTotalFanNumGroupByChannel(sysWxFanStatistics);
+    }
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java
index 8186cd083..b0a01c0ce 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysRecipesPlanServiceImpl.java
@@ -214,23 +214,37 @@ public class SysRecipesPlanServiceImpl implements ISysRecipesPlanService {
      */
     private void supplyRecipesBmenu(Long cusId){
         List<Map<String,Object>> list = getNeedSupplyRecipesByCusId(cusId);
-        if(list != null && list.size() > 0){
-            for (Map<String,Object> map : list) {
-                Long recipesId = (Long)map.get("recipesId");
-                Integer enNumDay = (Integer)map.get("enNumDay");
-                Integer maxNumDay = (Integer)map.get("maxNumDay");
-                if(recipesId != null && enNumDay != null && maxNumDay != null){
-                    List<SysRecipesDaily> menus = new ArrayList<>();
-                    for (int i = maxNumDay+1; i <= enNumDay; i++) {
-                        SysRecipesDaily daily = new SysRecipesDaily();
-                        daily.setCusId(cusId);
-                        daily.setNumDay(i);
-                        daily.setRecipesId(recipesId);
-                        menus.add(daily);
-                    }
-                    sysRecipesMapper.bashAddMenus(menus);
+        if(list == null || list.size() == 0){
+            return;
+        }
+        for (Map<String,Object> map : list) {
+            Long recipesId = (Long)map.get("recipesId");
+            Integer startNumDay = (Integer)map.get("startNumDay");
+            Integer endNumDay = (Integer)map.get("endNumDay");
+            if(recipesId == null || startNumDay == null || endNumDay == null){
+                continue;
+            }
+            List<SysRecipesDaily> recipesDailyList = sysRecipesMapper.getRecipesListByRecipesId(recipesId);
+            if(recipesDailyList != null && recipesDailyList.size() > 0){
+                for (SysRecipesDaily sysRecipesDaily : recipesDailyList) {
+                    sysRecipesDaily.setNumDay(startNumDay);
+                    //更新
+                    sysRecipesMapper.updateRecipesById(sysRecipesDaily);
+                    startNumDay++;
                 }
             }
+            recipesDailyList = new ArrayList<>();
+            for (int i = startNumDay; i <= endNumDay; i++) {
+                SysRecipesDaily sysRecipesDaily = new SysRecipesDaily();
+                sysRecipesDaily.setNumDay(i);
+                sysRecipesDaily.setRecipesId(recipesId);
+                sysRecipesDaily.setCusId(cusId);
+                recipesDailyList.add(sysRecipesDaily);
+            }
+            if(recipesDailyList.size() > 0){
+                //批量添加
+                sysRecipesMapper.bashAddMenus(recipesDailyList);
+            }
         }
     }
 
diff --git a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxFanStatisticsServiceImpl.java b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxFanStatisticsServiceImpl.java
index 752ed63aa..527da1dcc 100644
--- a/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxFanStatisticsServiceImpl.java
+++ b/stdiet-custom/src/main/java/com/stdiet/custom/service/impl/SysWxFanStatisticsServiceImpl.java
@@ -1,6 +1,7 @@
 package com.stdiet.custom.service.impl;
 
 import java.util.List;
+import java.util.Map;
 
 import com.stdiet.common.core.domain.AjaxResult;
 import com.stdiet.common.utils.DateUtils;
@@ -149,4 +150,14 @@ public class SysWxFanStatisticsServiceImpl implements ISysWxFanStatisticsService
     public List<SysWxFanStatistics> exportStatisticsList(SysWxFanStatistics sysWxFanStatistics) {
         return sysWxFanStatisticsMapper.exportStatisticsList(sysWxFanStatistics);
     }
+
+    /**
+     * 根据时间范围统计每个渠道的进粉数量
+     * @param sysWxFanStatistics
+     * @return
+     */
+    @Override
+    public List<Map<String,Object>> getTotalFanNumGroupByChannel(SysWxFanStatistics sysWxFanStatistics){
+        return sysWxFanStatisticsMapper.getTotalFanNumGroupByChannel(sysWxFanStatistics);
+    }
 }
\ No newline at end of file
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml
index e8bf59c8b..58cfd42fa 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysImportFanRecordMapper.xml
@@ -138,4 +138,21 @@
         where fwc.del_flag = 0 and fwc.import_fan_record_id = #{id}
     </select>
 
+    <!-- 根据时间范围统计各个渠道的总导粉数量 -->
+    <select id="getTotalFanNumGroupByChannel" parameterType="SysWxFanStatistics" resultType="Map" >
+        select s.channelId,acc.dict_label as channelName, s.totalFanNum from
+        (
+          select fr.import_fan_channel as channelId,sum(wa.import_fan_num) as totalFanNum from  sys_import_fan_wx_account wa
+          left join sys_import_fan_record fr on fr.id = wa.import_fan_record_id and fr.del_flag = 0
+          where wa.del_flag = 0
+          <if test="fanStartTime != null and fanEndTime != null">
+            and fr.import_fan_date >= #{fanStartTime} and #{fanEndTime} >= fr.import_fan_date
+          </if>
+          group by fr.import_fan_channel
+        )
+        s LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cus_account') AS acc ON acc.dict_value = s.channelId
+        order by s.channelId asc
+    </select>
+
+
 </mapper>
\ No newline at end of file
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml
index d3e410aff..54d6b1c48 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesMapper.xml
@@ -218,5 +218,16 @@
         ) ing USING(id)
     </select>
 
+    <!-- 根据 recipesId查询食谱具体每天详情 -->
+    <select id="getRecipesListByRecipesId" parameterType="Long" resultType="SysRecipesDaily">
+        SELECT id, num_day as numDay FROM sys_customer_daily_menu WHERE recipes_id = #{recipesId} order by num_day asc
+    </select>
 
+    <update id="updateRecipesById" parameterType="SysRecipesDaily">
+        update sys_customer_daily_menu
+        <trim prefix="SET" suffixOverrides=",">
+            <if test="numDay != null">num_day = #{numDay},</if>
+        </trim>
+        where id = #{id}
+    </update>
 </mapper>
\ No newline at end of file
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml
index 46680babf..83da1ad1d 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysRecipesPlanMapper.xml
@@ -287,13 +287,13 @@
 
     <!-- 查询食谱计划中对应食谱存在天数缺失的食谱计划,食谱计划发生变化时,可能会导致sys_customer_daily_menu表中天数缺失,需要查询出来进行补充 -->
     <select id="getNeedSupplyRecipesByCusId" parameterType="Long" resultType="Map">
-        select plan.recipes_id as recipesId,plan.end_num_day as enNumDay,s.maxNumDay from sys_recipes_plan as plan left join
-
+        select plan.cus_id as cusId,plan.recipes_id as recipesId,plan.start_num_day as startNumDay, plan.end_num_day as endNumDay from sys_recipes_plan as plan left join
         (
-          select recipes_id,count(1) as dayNum,max(num_day) as maxNumDay from sys_customer_daily_menu where cus_id = #{cusId} and recipes_id is not null group by recipes_id
+        select recipes_id,count(1) as dayNum,min(num_day) as minNumDay,max(num_day) as maxNumDay from sys_customer_daily_menu where cus_id = #{cusId} and recipes_id is not null group by recipes_id
         )
         as s on s.recipes_id = plan.recipes_id
 
-        where plan.cus_id = #{cusId} and plan.del_flag = 0 and plan.recipes_id is not null and plan.end_num_day > s.maxNumDay
+        where plan.cus_id = #{cusId} and plan.del_flag = 0 and plan.recipes_id is not null and (s.minNumDay <![CDATA[ <> ]]> plan.start_num_day or  s.maxNumDay <![CDATA[ <> ]]> plan.end_num_day)
+        order by plan.start_num_day asc
     </select>
 </mapper>
\ No newline at end of file
diff --git a/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml b/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml
index ce3a124cf..645d5283a 100644
--- a/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml
+++ b/stdiet-custom/src/main/resources/mapper/custom/SysWxFanStatisticsMapper.xml
@@ -153,4 +153,22 @@
         <if test="wxId != null">and swfs.wx_id = #{wxId}</if>
     </select>
 
+    <!-- 根据时间范围统计每个渠道的总进粉量 -->
+    <select id="getTotalFanNumGroupByChannel" parameterType="SysWxFanStatistics" resultType="Map">
+        select s.channelId,acc.dict_label as channelName,s.totalFanNum from
+        (
+		  select
+		  swd.account_id as channelId, sum(swfs.fan_num) as totalFanNum
+		  from sys_wx_fan_statistics swfs
+		  left join sys_wx_distribution swd on swd.wechat_account = swfs.wx_id and swd.del_flag = 0
+		  where swfs.del_flag = 0
+          <if test="fanStartTime != null and fanEndTime != null">
+            and swfs.fan_time >= #{fanStartTime} and #{fanEndTime} >= swfs.fan_time
+          </if>
+		  group by swd.account_id
+	    ) s
+	    LEFT JOIN (SELECT dict_label, dict_value FROM sys_dict_data WHERE dict_type = 'cus_account') AS acc ON acc.dict_value = s.channelId
+        order by s.channelId asc
+    </select>
+
 </mapper>
\ No newline at end of file
diff --git a/stdiet-ui/src/api/custom/fanStatistics.js b/stdiet-ui/src/api/custom/fanStatistics.js
index 14d90f2dc..f151e5221 100644
--- a/stdiet-ui/src/api/custom/fanStatistics.js
+++ b/stdiet-ui/src/api/custom/fanStatistics.js
@@ -61,5 +61,15 @@ export function getWxByUserId(userId) {
   })
 }
 
+// 获取通过率
+export function getImportFanPassRate(data) {
+  return request({
+    url: '/custom/fanStatistics/getImportFanPassRate',
+    method: 'get',
+    params: data
+  })
+}
+
+
 
 
diff --git a/stdiet-ui/src/components/ImportFanRate/index.vue b/stdiet-ui/src/components/ImportFanRate/index.vue
new file mode 100644
index 000000000..683ab7851
--- /dev/null
+++ b/stdiet-ui/src/components/ImportFanRate/index.vue
@@ -0,0 +1,74 @@
+<template>
+    <!--  -->
+    <!-- 导粉通过率 -->
+    <el-dialog :title="title" :visible.sync="open" width="600px" :close-on-click-modal="true" append-to-body @closed="cancel">
+        <div style="height: 500px; overflow: auto">
+            <el-table v-loading="loading" :data="passRateList"> 
+                <el-table-column label="账号渠道" align="center" prop="channelName" width="160"/>
+                <el-table-column label="导粉量" align="center" prop="totalImportFanNum" width="120"/>
+                <el-table-column label="进粉量" align="center" prop="totalPassFanNum" width="120"/>
+                <el-table-column label="通过率" align="center" prop="passRate" width="120">
+                    <template slot-scope="scope">
+                        {{scope.row.passRate + '%'}}
+                    </template>
+                </el-table-column>
+            </el-table>
+        </div>
+    </el-dialog>
+</template>
+<script>
+import {getImportFanPassRate} from "@/api/custom/fanStatistics";
+export default {
+  name: "ImportFanRate",
+  components: {
+      
+  },
+  data() {
+    return {
+        // 遮罩层
+      loading: true,
+      // 弹出层标题
+      title: "",
+      // 是否显示弹出层
+      open: false,
+      data: null,
+      passRateList: null
+    };
+  },
+  created(){
+    
+        
+  },
+  computed: {
+    
+  },
+  methods: {
+    showDialog(data) {
+      if(!data || data == undefined || data == null){
+          return;
+      }
+      this.data = data;
+      this.title = data.fanStartTime ? ("「"+data.fanStartTime+" 至 "+data.fanEndTime+"」进粉通过率统计") : "进粉通过率统计";
+      this.getImportFanPassRate();
+      this.open = true;
+    },
+    cancel(){
+        this.open = false; 
+    },
+    //获取所有可接粉的微信号
+    getImportFanPassRate() {
+        this.loading = true;
+        getImportFanPassRate(this.data).then((response) => {
+            if(response.code == 200){
+                this.passRateList = response.data;
+            }
+            this.loading = false;
+        });
+    },
+  },
+};
+</script>
+
+<style lang="scss" scoped>
+
+</style>
diff --git a/stdiet-ui/src/views/custom/fanStatistics/index.vue b/stdiet-ui/src/views/custom/fanStatistics/index.vue
index 4e5bdce20..6cc3eccb4 100644
--- a/stdiet-ui/src/views/custom/fanStatistics/index.vue
+++ b/stdiet-ui/src/views/custom/fanStatistics/index.vue
@@ -108,6 +108,15 @@
           >导出</el-button
         >
       </el-col>
+      <el-col :span="1.5">
+      <el-button
+            size="mini"
+            type="success"
+            @click="showPassRate()"
+            
+            >导粉通过率统计</el-button
+          >
+      </el-col>
       <right-toolbar
         :showSearch.sync="showSearch"
         @queryTable="getList"
@@ -270,6 +279,9 @@
         <el-button @click="editCancel">取 消</el-button>
       </div>
     </el-dialog>
+
+    <!-- 通过率 -->
+    <ImportFanRate ref="importFanRateRef"></ImportFanRate>
   </div>
 </template>
 
@@ -282,7 +294,9 @@ import {
   updateFanStatistics,
   exportFanStatistics,
   getWxByUserId,
+  getImportFanPassRate
 } from "@/api/custom/fanStatistics";
+import ImportFanRate from "@/components/ImportFanRate";
 import store from "@/store";
 import dayjs from "dayjs";
 import { mapState } from "vuex";
@@ -366,6 +380,9 @@ export default {
       preSaleIdOptions: (state) => state.global.preSaleIdOptions.slice(1),
     }),
   },
+  components:{
+      ImportFanRate
+  },
   methods: {
     /** 查询进粉统计列表 */
     getList() {
@@ -563,6 +580,11 @@ export default {
         }
       });
     },
+    showPassRate(){
+      this.queryParams.fanStartTime = this.fanTimeScope && this.fanTimeScope.length > 0 ? this.fanTimeScope[0] : null;
+      this.queryParams.fanEndTime = this.fanTimeScope && this.fanTimeScope.length > 0 ? this.fanTimeScope[1] : null;
+      this.$refs.importFanRateRef.showDialog(this.queryParams);
+    }
   },
   watch: {
     // 监听用户ID变化