Kaynağa Gözat

工作台数据查询,招商维度 (初版)

zhaoxian 2 yıl önce
ebeveyn
işleme
0fb075a24d

+ 12 - 9
ruixuan-live/src/main/java/com/ruixuan/isc/controller/KuaishouItemCollectSamplesController.java

@@ -40,6 +40,7 @@ import org.springframework.web.bind.annotation.RequestMapping;
 import org.springframework.web.bind.annotation.RequestParam;
 import org.springframework.web.bind.annotation.ResponseBody;
 import org.springframework.web.bind.annotation.RestController;
+
 import javax.servlet.http.HttpServletRequest;
 import javax.servlet.http.HttpServletResponse;
 import java.io.IOException;
@@ -411,10 +412,8 @@ public class KuaishouItemCollectSamplesController extends BaseController {
     }
 
 
-
-
     @DeleteMapping("/remove")
-    public AjaxResult remove( Long id) {
+    public AjaxResult remove(Long id) {
         return toAjax(kuaishouItemCollectSamplesService.deleteKuaishouItemCollectSamplesById(id));
     }
 
@@ -486,13 +485,14 @@ public class KuaishouItemCollectSamplesController extends BaseController {
 
     @GetMapping("/getPersonalInfo")
     @ApiOperation(value = "工作台——个人信息")
-    public JSONObject getPersonalInfo(@ApiParam("创建人ID") @RequestParam(value = "userId", required = true) Long userId) {
+    public JSONObject getPersonalInfo(@ApiParam("创建人ID") @RequestParam(value = "userId", required = true) Long userId,
+                                      @ApiParam("类型,1-渠道;2-招商") @RequestParam(value = "type", required = true) String type) {
         JSONObject returnJson = new JSONObject();
         try {
             if (Check.isNull(userId)) {
                 throw new Exception("请传入人员ID");
             }
-            return kuaishouItemCollectSamplesService.getPersonalInfo(userId);
+            return kuaishouItemCollectSamplesService.getPersonalInfo(userId, type);
         } catch (Exception e) {
             e.printStackTrace();
             returnJson.put("code", -1);
@@ -505,13 +505,15 @@ public class KuaishouItemCollectSamplesController extends BaseController {
     @GetMapping("/getOrderData")
     @ApiOperation(value = "工作台——订单数据")
     public JSONObject getOrderData(@ApiParam("创建人ID") @RequestParam(value = "userId", required = true) Long userId,
-                                   @ApiParam("日期") @RequestParam(value = "statDate", required = false) String statDate) {
+                                   @ApiParam("开始日期") @RequestParam(value = "statDate", required = false) String startDate,
+                                   @ApiParam("结束日期") @RequestParam(value = "endDate", required = false) String endDate,
+                                   @ApiParam("类型,1-渠道;2-招商") @RequestParam(value = "type", required = true) String type) {
         JSONObject returnJson = new JSONObject();
         try {
             if (Check.isNull(userId)) {
                 throw new Exception("请传入人员ID");
             }
-            return kuaishouItemCollectSamplesService.getOrderData(userId, statDate);
+            return kuaishouItemCollectSamplesService.getOrderData(userId, startDate, endDate, type);
         } catch (Exception e) {
             e.printStackTrace();
             returnJson.put("code", -1);
@@ -522,13 +524,14 @@ public class KuaishouItemCollectSamplesController extends BaseController {
 
     @GetMapping("/getDataAnalysis")
     @ApiOperation(value = "工作台——数据分析")
-    public JSONObject getDataAnalysis(@ApiParam("创建人ID") @RequestParam(value = "userId", required = true) Long userId) {
+    public JSONObject getDataAnalysis(@ApiParam("创建人ID") @RequestParam(value = "userId", required = true) Long userId,
+                                      @ApiParam("类型,1-渠道;2-招商") @RequestParam(value = "type", required = true) String type) {
         JSONObject returnJson = new JSONObject();
         try {
             if (Check.isNull(userId)) {
                 throw new Exception("请传入人员ID");
             }
-            return kuaishouItemCollectSamplesService.getDataAnalysis(userId);
+            return kuaishouItemCollectSamplesService.getDataAnalysis(userId, type);
         } catch (Exception e) {
             e.printStackTrace();
             returnJson.put("code", -1);

+ 4 - 2
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/KuaishouItemCollectSamplesMapper.java

@@ -101,10 +101,12 @@ public interface KuaishouItemCollectSamplesMapper {
 
     Long getItemIdById(@Param("id") Long id);
 
-    Integer getSampleCountByUserId(@Param("userId") Long userId, @Param("status") Integer status);
+    Integer getSampleCountByUserId(@Param("collectSampleId") Long collectSampleId, @Param("itemCreateId") Long itemCreateId, @Param("status") Integer status);
 
-    JSONObject queryTheNumberOfCompletedJobs(@Param("promoterIds") List<Long> promoterIds, @Param("statDate") String statDate);
+    JSONObject queryTheNumberOfCompletedJobs(@Param("promoterIds") List<Long> promoterIds, @Param("startDate") String startDate,@Param("endDate")  String endDate);
 
     List<JSONObject> selectPromoterInfo(@Param("map") Map<Long, Long> map);
+
+    List<Long> getItemIdsByCreateId(@Param("itemCreateId")  Long itemCreateId);
 }
 

+ 8 - 2
ruixuan-live/src/main/java/com/ruixuan/isc/mapper/SupplyChainMapper.java

@@ -73,11 +73,17 @@ public interface SupplyChainMapper {
 
     String getCookie();
 
-    JSONObject selectOrderInfo(@Param("promoterIds") List<Long> promoterIds, @Param("statDate") String statDate);
+    JSONObject selectOrderInfo(@Param("promoterIds") List<Long> promoterIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
 
-    JSONObject selectOrderRate(@Param("promoterIds") List<Long> promoterIds, @Param("statDate") String statDate, @Param("endDate") String endDate, @Param("statDate2") String statDate2, @Param("endDate2") String endDate2);
+    JSONObject selectOrderRate(@Param("promoterIds") List<Long> promoterIds, @Param("itemIds") List<Long> itemIds, @Param("statDate") String statDate, @Param("endDate") String endDate, @Param("statDate2") String statDate2, @Param("endDate2") String endDate2);
 
     List<JSONObject> getMonthOrderAmount(@Param("promoterIds") List<Long> promoterIds, @Param("userId") Long userId, @Param("statDate") String statDate, @Param("endDate") String endDate);
 
     JSONObject getMonthOrderAmountTotal(@Param("promoterIds") List<Long> promoterIds, @Param("start") String start, @Param("end") String end);
+
+    JSONObject selectOrderInfoByItemIds(@Param("itemIds") List<Long> itemIds, @Param("startDate") String startDate, @Param("endDate") String endDate);
+
+    List<JSONObject> getMonthOrderAmountByItems(@Param("itemIds") List<Long> itemIds, @Param("start") String start, @Param("end") String end);
+
+    JSONObject getMonthOrderAmountTotalByItems(@Param("itemIds") List<Long> itemIds, @Param("start") String start, @Param("end") String end);
 }

+ 3 - 3
ruixuan-live/src/main/java/com/ruixuan/isc/service/IKuaishouItemCollectSamplesService.java

@@ -94,10 +94,10 @@ public interface IKuaishouItemCollectSamplesService {
 
     Long getItemIdById(Long id);
 
-    JSONObject getPersonalInfo(Long userId);
+    JSONObject getPersonalInfo(Long userId, String type);
 
-    JSONObject getOrderData(Long userId, String statDate);
+    JSONObject getOrderData(Long userId, String startDate, String endDate, String type);
 
-    JSONObject getDataAnalysis(Long userId);
+    JSONObject getDataAnalysis(Long userId, String type);
 }
 

+ 8 - 2
ruixuan-live/src/main/java/com/ruixuan/isc/service/ISupplyChainService.java

@@ -96,11 +96,17 @@ public interface ISupplyChainService {
     //认领列表导出
     List<JSONObject> exportUserItemDetail(Map<String, Object> requestMap);
 
-    JSONObject selectOrderInfo(List<Long> promoterIds, String statDate);
+    JSONObject selectOrderInfo(List<Long> promoterIds, String startDate, String endDate);
 
-    JSONObject selectOrderRate(List<Long> promoterIds, String statDate, String endDate, String statDate2, String endDate2);
+    JSONObject selectOrderRate(List<Long> promoterIds,List<Long> itemIds, String statDate, String endDate, String statDate2, String endDate2);
 
     List<JSONObject> getMonthOrderAmount(List<Long> promoterIds, Long userId, String start, String end);
 
     JSONObject getMonthOrderAmountTotal(List<Long> promoterIds, String start, String end);
+
+    JSONObject selectOrderInfoByItemIds(List<Long> itemIds,String startDate, String endDate);
+
+    List<JSONObject> getMonthOrderAmountByItems(List<Long> itemIds, String start, String end);
+
+    JSONObject getMonthOrderAmountTotalByItems(List<Long> itemIds, String start, String end);
 }

+ 140 - 19
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/KuaishouItemCollectSamplesServiceImpl.java

@@ -89,7 +89,7 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
             for (KuaishouItemCollectSamples samples : kuaishouItemCollectSamples) {
                 Long promoterId = samples.getPromoterId();
                 JSONObject jsonObject = dataMap.get(promoterId);
-                if(!Check.isNull(jsonObject)){
+                if (!Check.isNull(jsonObject)) {
                     samples.setValidAmount(jsonObject.getLong("validAmount"));
                     samples.setValidOrderNum(jsonObject.getLong("validOrderNum"));
                 }
@@ -348,7 +348,15 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
 
 
     @Override
-    public JSONObject getPersonalInfo(Long userId) {
+    public JSONObject getPersonalInfo(Long userId, String type) {
+        Long collectSampleId = null;
+        Long itemCreateId = null;
+        if ("1".equals(type)) {
+            collectSampleId = userId;
+        } else {
+            itemCreateId = userId;
+        }
+
         JSONObject returnJson = new JSONObject();
         JSONObject data = new JSONObject();
         SysUser sysUser = userService.selectUserById(userId);
@@ -356,11 +364,11 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
             data.put("userName", sysUser.getNickName());
         }
         Integer status = 1; //待审核领样数
-        data.put("toBeReviewed", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(userId, status));
+        data.put("toBeReviewed", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(collectSampleId, itemCreateId, status));
         status = 3;//待发货领样数
-        data.put("toBeShipped", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(userId, status));
+        data.put("toBeShipped", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(collectSampleId, itemCreateId, status));
         status = 5;//待上传作业数
-        data.put("toBeUploaded", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(userId, status));
+        data.put("toBeUploaded", kuaishouItemCollectSamplesMapper.getSampleCountByUserId(collectSampleId, itemCreateId, status));
         returnJson.put("code", 0);
         returnJson.put("message", "调用成功");
         returnJson.put("data", data);
@@ -368,16 +376,31 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
     }
 
     @Override
-    public JSONObject getOrderData(Long userId, String statDate) {
+    public JSONObject getOrderData(Long userId, String startDate, String endDate, String type) {
         JSONObject returnJson = new JSONObject();
+        returnJson.put("code", 0);
+        returnJson.put("message", "调用成功");
+        if ("1".equals(type)) {
+            returnJson.put("data", getgetOrderDataByChannel(userId, startDate, endDate));
+        } else {
+            returnJson.put("data", getgetOrderDataByAttractInvestment(userId, startDate, endDate));
+        }
+        return returnJson;
+    }
+
+    //渠道数据
+    private JSONObject getgetOrderDataByChannel(Long userId, String startDate, String endDate) {
+        long startTime = System.currentTimeMillis();
         JSONObject data = new JSONObject();
         List<Long> promoterIds = promoterService.selectPromoterIdList(userId);
+        System.out.println("用时:"+(System.currentTimeMillis()-startTime)/1000 +"s");
         if (Check.isNotNull(promoterIds)) {
             data.put("promoterCount", promoterIds.size());//达人总数
-            JSONObject Sample = kuaishouItemCollectSamplesMapper.queryTheNumberOfCompletedJobs(promoterIds, statDate);
+            JSONObject Sample = kuaishouItemCollectSamplesMapper.queryTheNumberOfCompletedJobs(promoterIds, startDate, endDate);
+            System.out.println("用时:"+(System.currentTimeMillis()-startTime)/1000 +"s");
             data.put("completeCount", Sample.getInteger("completeCount"));//完成作业数
             data.put("completeRate", Sample.getString("completeRate"));//合格作业率
-            JSONObject order = supplyChainService.selectOrderInfo(promoterIds, statDate);
+            JSONObject order = supplyChainService.selectOrderInfo(promoterIds, startDate, endDate);
             data.put("allNumber", order.getInteger("allNumber"));//订单总数
             data.put("validOrderNUm", order.getInteger("validOrderNUm"));//有效订单数
             data.put("inValidOrderNUm", order.getInteger("allNumber") - order.getInteger("validOrderNUm"));//失效订单数
@@ -397,27 +420,83 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
             String LastStart = DateUtils.getSubtractTime(date, 13);
 
             //日环比
-            JSONObject dateOrderRate = supplyChainService.selectOrderRate(promoterIds, today, today, yesterday, yesterday);
+            JSONObject dateOrderRate = supplyChainService.selectOrderRate(promoterIds, null, today, today, yesterday, yesterday);
             data.put("dateOrderRate", dateOrderRate.getString("orderRate"));
             data.put("dateAmountRate", dateOrderRate.getString("amountRate"));
             //周同比
-            JSONObject monthOrderRate = supplyChainService.selectOrderRate(promoterIds, today, today, todayOfLastWeek, todayOfLastWeek);
+            JSONObject monthOrderRate = supplyChainService.selectOrderRate(promoterIds, null, today, today, todayOfLastWeek, todayOfLastWeek);
             data.put("monthOrderRate", monthOrderRate.getString("orderRate"));
             data.put("monthAmountRate", monthOrderRate.getString("amountRate"));
             //数据对比
-            JSONObject dataOrderRate = supplyChainService.selectOrderRate(promoterIds, start, today, LastStart, todayOfLastWeek);
+            JSONObject dataOrderRate = supplyChainService.selectOrderRate(promoterIds, null, start, today, LastStart, todayOfLastWeek);
             data.put("dataOrderRate", dataOrderRate.getString("orderRate"));
             data.put("dataAmountRate", dataOrderRate.getString("amountRate"));
         }
+        return data;
+    }
+
+
+    //招商数据
+    private JSONObject getgetOrderDataByAttractInvestment(Long userId, String startDate, String endDate) {
+        JSONObject data = new JSONObject();
+        List<Long> promoterIds = promoterService.selectPromoterIdList(null);
+        if (Check.isNotNull(promoterIds)) {
+            data.put("promoterCount", promoterIds.size());//达人总数
+        }
+        //查询登录人(创建人)的所有商品
+        List<Long> itemIds = kuaishouItemCollectSamplesMapper.getItemIdsByCreateId(userId);
+        JSONObject order = supplyChainService.selectOrderInfoByItemIds(itemIds, startDate, endDate);
+        data.put("sendCount", order.getInteger("sendCount"));//发货数
+        data.put("sendRate", order.getString("sendRate"));//订单发货率
+        data.put("allNumber", order.getInteger("allNumber"));//订单总数
+        data.put("validOrderNUm", order.getInteger("validOrderNUm"));//有效订单数
+        data.put("inValidOrderNUm", order.getInteger("allNumber") - order.getInteger("validOrderNUm"));//失效订单数
+        data.put("orderAmount", order.getInteger("orderAmount"));//订单金额
+        data.put("regimentalPromotionAmount", order.getInteger("regimentalPromotionAmount"));//预估服务费
+        data.put("baseAmount", order.getInteger("baseAmount"));//累计货贷基数
+        //当天
+        String today = DateUtils.getNowDateStr();
+        Date date = new Date();
+        //昨天
+        String yesterday = DateUtils.getSubtractTime(date, 1);
+        //上周的同一天(上个近七天的结束日期)
+        String todayOfLastWeek = DateUtils.getSubtractTime(date, 7);
+        //当前近七天的开始日期
+        String start = DateUtils.getSubtractTime(date, 6);
+        //上个近七天的开始日期
+        String LastStart = DateUtils.getSubtractTime(date, 13);
+
+        //日环比
+        JSONObject dateOrderRate = supplyChainService.selectOrderRate(null, itemIds, today, today, yesterday, yesterday);
+        data.put("dateOrderRate", dateOrderRate.getString("orderRate"));
+        data.put("dateAmountRate", dateOrderRate.getString("amountRate"));
+        //周同比
+        JSONObject monthOrderRate = supplyChainService.selectOrderRate(null, itemIds, today, today, todayOfLastWeek, todayOfLastWeek);
+        data.put("monthOrderRate", monthOrderRate.getString("orderRate"));
+        data.put("monthAmountRate", monthOrderRate.getString("amountRate"));
+        //数据对比
+        JSONObject dataOrderRate = supplyChainService.selectOrderRate(null, itemIds, start, today, LastStart, todayOfLastWeek);
+        data.put("dataOrderRate", dataOrderRate.getString("orderRate"));
+        data.put("dataAmountRate", dataOrderRate.getString("amountRate"));
+
+        return data;
+    }
+
+    @Override
+    public JSONObject getDataAnalysis(Long userId, String type) {
+        JSONObject returnJson = new JSONObject();
         returnJson.put("code", 0);
         returnJson.put("message", "调用成功");
-        returnJson.put("data", data);
+        if ("1".equals(type)) {
+            returnJson.put("data", getDataAnalysisByChannel(userId));
+        } else {
+            returnJson.put("data", getDataAnalysisByAttractInvestment(userId));
+        }
         return returnJson;
     }
 
-    @Override
-    public JSONObject getDataAnalysis(Long userId) {
-        JSONObject returnJson = new JSONObject();
+    // 渠道—数据分析
+    private JSONObject getDataAnalysisByChannel(Long userId) {
         JSONObject data = new JSONObject();
         List<Long> promoterIds = promoterService.selectPromoterIdList(userId);
         if (Check.isNotNull(promoterIds)) {
@@ -461,12 +540,54 @@ public class KuaishouItemCollectSamplesServiceImpl implements IKuaishouItemColle
                 data.put("promoterRate", promoter.getString("rate"));
             }
         }
-        returnJson.put("code", 0);
-        returnJson.put("message", "调用成功");
-        returnJson.put("data", data);
-        return returnJson;
+        return data;
     }
 
+    // 招商—数据分析
+    private JSONObject getDataAnalysisByAttractInvestment(Long userId) {
+        JSONObject data = new JSONObject();
+        //查询登录人(创建人)的所有商品
+        List<Long> itemIds = kuaishouItemCollectSamplesMapper.getItemIdsByCreateId(userId);
+        if (Check.isNotNull(itemIds)) {
+            //当天
+            String end = DateUtils.getNowDateStr();
+            //当前月份第一天
+            String start = DateUtils.getFirstDayByMonth();
+            List<JSONObject> list = supplyChainService.getMonthOrderAmountByItems(itemIds, start, end);
+            List<String> allDates = DateUtils.getAllDatesOfTwoTimes(start, end);
+            if (Check.isNull(list) || list.size() != allDates.size()) {
+                String orderAmountStr = JSONObject.toJSONString(list);
+                for (String date : allDates) {
+                    if (!orderAmountStr.contains(date)) {
+                        JSONObject obj = new JSONObject();
+                        obj.put("date", date);
+                        obj.put("orderAmount", 0);
+                        obj.put("totalRegimentalSettleAmount", 0);
+                        obj.put("orderCount", 0);
+                        list.add(obj);
+                    }
+                }
+                //排序
+                Collections.sort(list, new Comparator<JSONObject>() {
+                    @Override
+                    public int compare(JSONObject o1, JSONObject o2) {
+                        return o1.getString("date").compareTo(o2.getString("date"));
+                    }
+                });
+            }
+            data.put("list", list);
+            JSONObject amount = supplyChainService.getMonthOrderAmountTotalByItems(itemIds, start, end);
+            if (Check.isNotNull(amount)) {
+                data.put("orderAmount", amount.getInteger("orderAmount"));
+                data.put("totalRegimentalSettleAmount", amount.getInteger("totalRegimentalSettleAmount"));
+                data.put("orderAmountRate", amount.getString("orderAmountRate"));
+                data.put("totalRegimentalSettleAmountRate", amount.getString("totalRegimentalSettleAmountRate"));
+                data.put("orderCount", amount.getString("orderCount"));
+                data.put("orderCountRate", amount.getString("orderCountRate"));
+            }
+        }
+        return data;
+    }
 
 }
 

+ 19 - 4
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/SupplyChainServiceImpl.java

@@ -182,13 +182,13 @@ public class SupplyChainServiceImpl implements ISupplyChainService {
     }
 
     @Override
-    public JSONObject selectOrderInfo(List<Long> promoterIds, String statDate) {
-        return supplyChainMapper.selectOrderInfo(promoterIds, statDate);
+    public JSONObject selectOrderInfo(List<Long> promoterIds, String startDate, String endDate) {
+        return supplyChainMapper.selectOrderInfo(promoterIds, startDate, endDate);
     }
 
     @Override
-    public JSONObject selectOrderRate(List<Long> promoterIds, String statDate, String endDate, String statDate2, String endDate2) {
-        return supplyChainMapper.selectOrderRate(promoterIds, statDate, endDate, statDate2, endDate2);
+    public JSONObject selectOrderRate(List<Long> promoterIds, List<Long> itemIds, String statDate, String endDate, String statDate2, String endDate2) {
+        return supplyChainMapper.selectOrderRate(promoterIds, itemIds, statDate, endDate, statDate2, endDate2);
     }
 
     @Override
@@ -200,4 +200,19 @@ public class SupplyChainServiceImpl implements ISupplyChainService {
     public JSONObject getMonthOrderAmountTotal(List<Long> promoterIds, String start, String end) {
         return supplyChainMapper.getMonthOrderAmountTotal(promoterIds, start, end);
     }
+
+    @Override
+    public JSONObject selectOrderInfoByItemIds(List<Long> itemIds, String startDate, String endDate) {
+        return supplyChainMapper.selectOrderInfoByItemIds(itemIds, startDate, endDate);
+    }
+
+    @Override
+    public List<JSONObject> getMonthOrderAmountByItems(List<Long> itemIds, String start, String end) {
+        return supplyChainMapper.getMonthOrderAmountByItems(itemIds, start, end);
+    }
+
+    @Override
+    public JSONObject getMonthOrderAmountTotalByItems(List<Long> itemIds, String start, String end) {
+        return supplyChainMapper.getMonthOrderAmountTotalByItems(itemIds, start, end);
+    }
 }

+ 18 - 5
ruixuan-live/src/main/resources/mapper/isc/KuaishouItemCollectSamplesMapper.xml

@@ -481,7 +481,12 @@
         select IFNULL(SUM(sample_count), 0) as 'sampleCount'
         from kuaishou_item_collect_samples
         where collect_sample_status = #{status}
-          AND collect_sample_id = #{userId}
+        <if test="collectSampleId != null and collectSampleId != ''">
+            AND collect_sample_id = #{collectSampleId}
+        </if>
+        <if test="itemCreateId != null and itemCreateId != ''">
+            AND item_create_id = #{itemCreateId}
+        </if>
     </select>
 
 
@@ -491,8 +496,9 @@
         IFNULL(CONCAT(ROUND(completeCount / allCount * 100, 2), '%'), '0%') as 'completeRate'
         FROM (SELECT IFNULL(SUM(sample_count), 0) as 'completeCount'
         FROM kuaishou_item_collect_samples
-        WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = #{statDate}
-        And collect_sample_status = 7
+        WHERE DATE_FORMAT(create_time, '%Y-%m-%d') >= #{startDate}
+        AND DATE_FORMAT(create_time, '%Y-%m-%d') &lt;= #{endDate}
+        AND collect_sample_status = 7
         AND promoter_id in
         <foreach collection="promoterIds" item="item" separator=","
                  open="(" close=")">
@@ -502,15 +508,16 @@
         LEFT JOIN
         (SELECT IFNULL(SUM(sample_count), 0) as 'allCount'
         FROM kuaishou_item_collect_samples
-        WHERE DATE_FORMAT(create_time, '%Y-%m-%d') = #{statDate}
+        WHERE DATE_FORMAT(create_time, '%Y-%m-%d') >= #{startDate}
+        AND DATE_FORMAT(create_time, '%Y-%m-%d') &lt;= #{endDate}
         AND promoter_id in
         <foreach collection="promoterIds" item="item" separator=","
                  open="(" close=")">
             #{item}
         </foreach>
         ) t2 on 1 = 1
-
     </select>
+
     <select id="selectPromoterInfo" resultType="com.alibaba.fastjson.JSONObject">
         select promoter_id as 'promoterId',
         valid_order_num as 'validOrderNum',
@@ -521,5 +528,11 @@
         </foreach>
     </select>
 
+    <select id="getItemIdsByCreateId" resultType="Long">
+        select item_id
+        from kuaishou_item_collect_samples
+        where item_create_id = #{itemCreateId}
+    </select>
+
 
 </mapper>

+ 156 - 38
ruixuan-live/src/main/resources/mapper/isc/SupplyChainMapper.xml

@@ -1056,18 +1056,46 @@
         SUM(CASE WHEN order_status != 80 THEN regimental_promotion_amount ELSE 0 END),
         0) AS 'regimentalPromotionAmount', IFNULL(sum(base_amount), 0) as 'baseAmount'
         FROM kuaishou_supply_chain
-        WHERE promoter_id in
-        <foreach collection="promoterIds" item="item" separator=","
-                 open="(" close=")">
-            #{item}
-        </foreach>
-        ANd stat_date = #{statDate}
+        WHERE stat_date >= #{startDate}
+        AND stat_date &lt;= #{endDate}
+        <if test='promoterIds != null and promoterIds.size() > 0'>
+            AND promoter_id in
+            <foreach collection="promoterIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+    </select>
+
+    <select id="selectOrderInfoByItemIds" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT t.*,
+        CONCAT(IFNULL(ROUND(sendCount / allNumber * 100, 2),0), '%') as 'sendRate'
+        FROM (SELECT COUNT(oid) as 'allNumber',
+        IFNULL(SUM(CASE WHEN order_status != 80 THEN 1 ELSE 0 END), 0) AS
+        'validOrderNUm',
+        IFNULL(SUM(CASE WHEN order_status != 80 THEN order_amount ELSE 0 END), 0) AS 'orderAmount',
+        IFNULL(
+        SUM(CASE WHEN order_status != 80 THEN regimental_promotion_amount ELSE 0 END),
+        0) AS 'regimentalPromotionAmount',
+        IFNULL(sum(base_amount), 0) as 'baseAmount',
+        IFNULL(COUNT(CASE WHEN send_status = 1 THEN oid ELSE null END), 0) AS 'sendCount'
+        FROM kuaishou_supply_chain
+        WHERE stat_date >= #{startDate}
+        AND stat_date &lt;= #{endDate}
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND item_id in
+            <foreach collection="itemIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        ) t
     </select>
 
     <select id="selectOrderRate" resultType="com.alibaba.fastjson.JSONObject">
         SELECT
-        IFNULL(CONCAT(ROUND((t1.allNumber-t2.allNumber)/t2.allNumber*100,2),'%'),'0%') as 'orderRate',
-        IFNULL(CONCAT(ROUND((t1.orderAmount-t2.orderAmount)/t2.orderAmount*100,2),'%'),'0%') as 'amountRate'
+        IFNULL(ROUND((t1.allNumber-t2.allNumber)/t2.allNumber*100,2),'0') as 'orderRate',
+        IFNULL(ROUND((t1.orderAmount-t2.orderAmount)/t2.orderAmount*100,2),'0') as 'amountRate'
         FROM
         (
         SELECT
@@ -1079,13 +1107,22 @@
         END
         ) AS 'orderAmount'
         FROM kuaishou_supply_chain
-        WHERE promoter_id in
-        <foreach collection="promoterIds" item="item" separator=","
-                 open="(" close=")">
-            #{item}
-        </foreach>
-        ANd stat_date >= #{statDate}
+        WHERE stat_date >= #{statDate}
         AND stat_date &lt;= #{endDate}
+        <if test='promoterIds != null and promoterIds.size() > 0'>
+            AND promoter_id in
+            <foreach collection="promoterIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND item_id in
+            <foreach collection="itemIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
         ) t1
         LEFT JOIN
         (
@@ -1098,13 +1135,22 @@
         END
         ) AS 'orderAmount'
         FROM kuaishou_supply_chain
-        WHERE promoter_id in
-        <foreach collection="promoterIds" item="item" separator=","
-                 open="(" close=")">
-            #{item}
-        </foreach>
-        ANd stat_date >= #{statDate2}
+        WHERE stat_date >= #{statDate2}
         AND stat_date &lt;= #{endDate2}
+        <if test='promoterIds != null and promoterIds.size() > 0'>
+            AND promoter_id in
+            <foreach collection="promoterIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND item_id in
+            <foreach collection="itemIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
         ) t2 ON 1=1
     </select>
 
@@ -1124,22 +1170,46 @@
         AND DATE_FORMAT(create_time, '%Y-%m-%d') &lt;= #{endDate}
         GROUP BY DATE_FORMAT(create_time, '%Y-%m-%d')
         ) t2 ON t1.FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') = t2.date
-        WHERE promoter_id in
-        <foreach collection="promoterIds" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-        AND order_status != 80
+        WHERE order_status != 80
+        <if test='promoterIds != null and promoterIds.size() > 0'>
+            AND promoter_id in
+            <foreach collection="promoterIds" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
         AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') >= #{statDate}
         AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') &lt;= #{endDate}
         GROUP BY FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d')
         ORDER BY FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d')
     </select>
 
+    <select id="getMonthOrderAmountByItems" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+        FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') as 'date',
+        IFNULL(SUM(order_amount),0) AS 'orderAmount',
+        IFNULL(SUM(total_regimental_settle_amount),0) AS 'totalRegimentalSettleAmount',
+        count(oid) AS 'orderCount'
+        FROM kuaishou_supply_chain
+        WHERE order_status != 80
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND item_id in
+            <foreach collection="itemIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') >= #{start}
+        AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') &lt;= #{end}
+        GROUP BY FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d')
+        ORDER BY FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d')
+    </select>
 
     <select id="getMonthOrderAmountTotal" resultType="com.alibaba.fastjson.JSONObject">
-        SELECT t1.orderAmount,t1.totalRegimentalSettleAmount,
-        CONCAT(ROUND(t2.orderAmount/t1.orderAmount*100,2),'%') as 'orderAmountRate',
-        CONCAT(ROUND(t2.totalRegimentalSettleAmount/t1.totalRegimentalSettleAmount*100,2),'%') as
+        SELECT
+        t1.orderAmount,
+        t1.totalRegimentalSettleAmount,
+        CONCAT(IFNULL(ROUND(t2.orderAmount/t1.orderAmount*100,2),0),'%') as 'orderAmountRate',
+        CONCAT(IFNULL(ROUND(t2.totalRegimentalSettleAmount/t1.totalRegimentalSettleAmount*100,2),0),'%') as
         'totalRegimentalSettleAmountRate'
         FROM
         (
@@ -1147,11 +1217,13 @@
         IFNULL(SUM(order_amount),0) AS 'orderAmount',
         IFNULL(SUM(total_regimental_settle_amount),0) AS 'totalRegimentalSettleAmount'
         FROM kuaishou_supply_chain t1
-        WHERE promoter_id in
-        <foreach collection="promoterIds" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-        AND order_status != 80
+        WHERE order_status != 80
+        <if test='promoterIds != null and promoterIds.size() > 0'>
+            AND promoter_id in
+            <foreach collection="promoterIds" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
         AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') >= #{start}
         AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') &lt;= #{end})t1
         LEFT JOIN
@@ -1160,11 +1232,57 @@
         IFNULL(SUM(order_amount),0) AS 'orderAmount',
         IFNULL(SUM(total_regimental_settle_amount),0) AS 'totalRegimentalSettleAmount'
         FROM kuaishou_supply_chain t1
-        WHERE promoter_id in
-        <foreach collection="promoterIds" item="item" separator="," open="(" close=")">
-            #{item}
-        </foreach>
-        AND order_status != 80
+        WHERE order_status != 80
+        <if test='promoterIds != null and promoterIds.size() > 0'>
+            AND promoter_id in
+            <foreach collection="promoterIds" item="item" separator="," open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
         AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') = #{end})t2 ON 1=1
     </select>
+
+    <select id="getMonthOrderAmountTotalByItems" resultType="com.alibaba.fastjson.JSONObject">
+        SELECT
+        t1.orderAmount,
+        t1.totalRegimentalSettleAmount,
+        t1.orderCount,
+        CONCAT(IFNULL(ROUND(t2.orderAmount/t1.orderAmount*100,2),0),'%') as 'orderAmountRate',
+        CONCAT(IFNULL(ROUND(t2.orderCount/t1.orderCount*100,2),0),'%') as 'orderCountRate',
+        CONCAT(IFNULL(ROUND(t2.totalRegimentalSettleAmount/t1.totalRegimentalSettleAmount*100,2),0),'%') as
+        'totalRegimentalSettleAmountRate'
+        FROM
+        (
+        SELECT
+        IFNULL(SUM(order_amount),0) AS 'orderAmount',
+        IFNULL(SUM(total_regimental_settle_amount),0) AS 'totalRegimentalSettleAmount',
+        COUNT(oid) as 'orderCount'
+        FROM kuaishou_supply_chain t1
+        WHERE order_status != 80
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND item_id in
+            <foreach collection="itemIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') >= #{start}
+        AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') &lt;= #{end})t1
+        LEFT JOIN
+        (
+        SELECT
+        IFNULL(SUM(order_amount),0) AS 'orderAmount',
+        IFNULL(SUM(total_regimental_settle_amount),0) AS 'totalRegimentalSettleAmount',
+        COUNT(oid) as 'orderCount'
+        FROM kuaishou_supply_chain t1
+        WHERE order_status != 80
+        <if test='itemIds != null and itemIds.size() > 0'>
+            AND item_id in
+            <foreach collection="itemIds" item="item" separator=","
+                     open="(" close=")">
+                #{item}
+            </foreach>
+        </if>
+        AND FROM_UNIXTIME(order_create_time / 1000, '%Y-%m-%d') =#{end})t2 ON 1=1
+    </select>
 </mapper>