yumeng 1 年之前
父节点
当前提交
d793518239

+ 107 - 1
ruixuan-live/src/main/java/com/ruixuan/isc/controller/SupplyChainController.java

@@ -430,6 +430,70 @@ public class SupplyChainController extends BaseController {
     }
 
 
+    @PostMapping("/exportItemDetail")
+    @ResponseBody
+    public void exportItemDetail(
+            HttpServletRequest request, HttpServletResponse response, @RequestBody JSONObject requestJson
+    ) throws IOException {
+        Map<String, Object> requestMap = new HashMap<>();
+        if (!Check.isNull(requestJson.getString("orderStartDate"))) {
+            Long start = DateUtils.getStartLongTime(requestJson.getString("orderStartDate"));
+            requestMap.put("start", start);
+        }
+        if (!Check.isNull(requestJson.getString("orderEndDate"))) {
+            Long end = DateUtils.getEndLongTime(requestJson.getString("orderEndDate"));
+            requestMap.put("end", end);
+        }
+        if (!Check.isNull(requestJson.getLong("promoterId"))) {
+            requestMap.put("promoterId", requestJson.getLong("promoterId"));
+        }
+        if (!Check.isNull(requestJson.getLong("itemId"))) {
+            requestMap.put("itemId", requestJson.getLong("itemId"));
+        }
+        if (!Check.isNull(requestJson.getString("promoterNickName"))) {
+            requestMap.put("itemTitle", requestJson.getString("promoterNickName"));
+        }
+        if (!Check.isNull(requestJson.getLong("userId"))) {
+            requestMap.put("userId", requestJson.getLong("userId"));
+        }
+
+        List<JSONObject> list = supplyChainService.exportItemDetail(requestMap);
+        List<List<Object>> exportList = new ArrayList<>();
+        if (!Check.isNull(list)) {
+            for (int i = 0; i < list.size(); i++) {
+                JSONObject data = list.get(i);
+                List<Object> export = new ArrayList();
+                export.add(data.getString("userName"));
+                String promoterNickName = data.getString("promoterNickName");
+                String promoterId = data.getString("promoterId");
+                String name = promoterNickName + "(" + promoterId + ")";
+                export.add(name);
+                export.add(data.getInteger("orderNum"));
+                export.add(data.getString("validOrderNUm"));
+                export.add(data.getString("validRadio"));
+                export.add(data.getString("deliveryNum"));
+                export.add(data.getString("shippingGreen"));
+                export.add(data.getString("effDeliveryNum"));
+                export.add(data.getString("deliveryRadio"));
+                export.add(data.getString("notDeliveryNum"));
+                export.add(data.getInteger("payAmount"));
+                export.add(data.getString("regimentalPromotionRate"));
+                exportList.add(export);
+            }
+            String[] headers = {"绑定人", "达人信息", "单量", "有效订单数", "有效率", "发货数", "发货率", "有效发货数", "有效发货率", "未发货数", "付款金额", "服务费率"};
+            OutputStream os = response.getOutputStream();
+            ExportExcelUtils eeu = new ExportExcelUtils();
+            XSSFWorkbook workbook = new XSSFWorkbook();
+            eeu.exportExcel(workbook, 0, "商品出单详情", headers, exportList);
+            this.setResponseHeader(response, "商品出单详情.xls");
+            workbook.write(os);
+            os.flush();
+            os.close();
+
+
+        }
+    }
+
     /**
      * 产品服务费
      *
@@ -867,10 +931,52 @@ public class SupplyChainController extends BaseController {
                 if (!Check.isNull(userName)) {
                     export.add(userName);
                 }
+
+
+                Map<String, Object> map = new HashMap<>();
+                map.put("promoterId", promoterId);
+                map.put("start", DateUtils.getStartLongTime(requestJson.getString("orderStartDate")));
+                map.put("end", DateUtils.getEndLongTime(requestJson.getString("orderEndDate")));
+                List<JSONObject> topOrders = supplyChainService.getTopOrders(map);
+                if (!Check.isNull(topOrders)) {
+                    JSONObject top1 = topOrders.get(0);
+                    StringBuffer top1StringBuffer = new StringBuffer();
+                    top1StringBuffer.append("商品ID:").append(top1.getString("itemId")).append(String.valueOf((char) 10))
+                            .append("出单量:").append(top1.getString("orderNum")).append(String.valueOf((char) 10))
+                            .append("标题:").append(top1.getString("itemTitle")).append(String.valueOf((char) 10))
+                            .append("链接:").append(top1.getString("imageUrl"));
+                    export.add(top1StringBuffer);
+
+                }
+
+
+                if (!Check.isNull(topOrders) && topOrders.size() >= 2) {
+                    JSONObject top2 = topOrders.get(1);
+                    if (!Check.isNull(top2)) {
+                        StringBuffer top2StringBuffer = new StringBuffer();
+                        top2StringBuffer.append("商品ID:").append(top2.getString("itemId")).append(String.valueOf((char) 10))
+                                .append("出单量:").append(top2.getString("orderNum")).append(String.valueOf((char) 10))
+                                .append("标题:").append(top2.getString("itemTitle")).append(String.valueOf((char) 10))
+                                .append("链接:").append(top2.getString("imageUrl"));
+                        export.add(top2StringBuffer);
+                    }
+                }
+                if (!Check.isNull(topOrders) && topOrders.size() >= 3) {
+                    JSONObject top3 = topOrders.get(2);
+                    if (!Check.isNull(top3)) {
+                        StringBuffer top3StringBuffer = new StringBuffer();
+                        top3StringBuffer.append("商品ID:").append(top3.getString("itemId")).append(String.valueOf((char) 10))
+                                .append("出单量:").append(top3.getString("orderNum")).append(String.valueOf((char) 10))
+                                .append("标题:").append(top3.getString("itemTitle")).append(String.valueOf((char) 10))
+                                .append("链接:").append(top3.getString("imageUrl"));
+                        export.add(top3StringBuffer);
+                    }
+                }
                 exportList.add(export);
             }
+
         }
-        String[] headers = {"达人名称", "订单数", "有效订单数", "有效订单率", "GVM", "有效GMV", "发货数", "发货率", "未发货数", "绑定人"};
+        String[] headers = {"达人名称", "订单数", "有效订单数", "有效订单率", "GVM", "有效GMV", "发货数", "发货率", "未发货数", "绑定人", "top1", "top2", "top3"};
         OutputStream os = response.getOutputStream();
         ExportExcelUtils eeu = new ExportExcelUtils();
         XSSFWorkbook workbook = new XSSFWorkbook();

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

@@ -164,4 +164,6 @@ public interface SupplyChainMapper {
     List<JSONObject> getBytedanceOrderHourDataList(@Param("date") Long date);
 
     List<JSONObject> getKuaishouOrderHourDataList(@Param("date") String date);
+
+    List<JSONObject> exportItemDetail(Map<String, Object> requestMap);
 }

+ 4 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/ISupplyChainService.java

@@ -187,4 +187,8 @@ public interface ISupplyChainService {
     List<JSONObject> getBytedanceOrderHourDataList(Long today);
 
     List<JSONObject> getKuaishouOrderHourDataList(String today);
+
+    List<JSONObject> getTopOrders(Map<String, Object> requestMap);
+
+    List<JSONObject> exportItemDetail(Map<String, Object> requestMap);
 }

+ 10 - 0
ruixuan-live/src/main/java/com/ruixuan/isc/service/impl/SupplyChainServiceImpl.java

@@ -635,6 +635,16 @@ public class SupplyChainServiceImpl implements ISupplyChainService {
         return supplyChainMapper.getKuaishouOrderHourDataList(date);
     }
 
+    @Override
+    public List<JSONObject> getTopOrders(Map<String, Object> requestMap) {
+        return supplyChainMapper.getTopOrders(requestMap);
+    }
+
+    @Override
+    public List<JSONObject> exportItemDetail(Map<String, Object> requestMap) {
+        return supplyChainMapper.exportItemDetail(requestMap);
+    }
+
     private void getInfoKuaishouActivityInfo(KuaishouAccessToken accessToken, String url) {
         List<KuaiShouActivityInfo> list = new ArrayList<>();
         String appKey = accessToken.getAppKey();

+ 46 - 0
ruixuan-live/src/main/resources/mapper/isc/SupplyChainMapper.xml

@@ -2671,5 +2671,51 @@
         GROUP BY stat_hour
         ORDER BY stat_hour
     </select>
+    <select id="exportItemDetail" resultType="com.alibaba.fastjson.JSONObject">
+        select t.*,tt.userName
+        from (
+        select
+        promoter_nick_name as 'promoterNickName',
+        promoter_id as 'promoterId',
+        count(oid) as 'orderNum',
+        round(sum(case when order_status != 80 then pay_amount else 0 end)/100,2 )as 'payAmount',
+        round(regimental_promotion_rate / 10 ,2) as 'regimentalPromotionRate',
+        sum(case when order_status != 80 then 1 else 0 end) as 'validOrderNUm',
+        round(sum(case when order_status != 80 then 1 else 0 end) / count(oid) * 100,2) as 'validRadio',
+        sum(case when send_status = 1 then 1 else 0 end) as 'deliveryNum',
+        round(sum(case when send_status = 1 and order_status != 80 then 1 else 0 end) / sum(case when order_status != 80
+        then 1 else 0 end) * 100 ,2) as 'shippingGreen',
+        sum(case when send_status = 1 and order_status != 80 then 1 else 0 end) as 'effDeliveryNum',
+        sum(case when send_status = 0 and order_status != 80 then 1 else 0 end) as 'notDeliveryNum',
+        round(sum(case when send_status = 1 and order_status != 80 then 1 else 0 end) / sum(case when send_status = 1
+        then 1 else 0 end) *100,2) as 'deliveryRadio'
+        from kuaishou_supply_chain
+        where 1= 1
+        <if test="itemId != null and itemId != ''">
+            and item_id = #{itemId}
+        </if>
+        <if test="start != null and start != ''">
+            and order_create_time &gt;= #{start}
+        </if>
+        <if test="end != null and end != ''">
+            and order_create_time &lt;= #{end}
+        </if>
+        <if test="promoterId != null and promoterId != ''">
+            and promoter_id = #{promoterId}
+        </if>
+        <if test="promoterNickName != null and promoterNickName != ''">
+            and promoter_nick_name like concat(concat('%',#{promoterNickName}),'%')
+        </if>
+        group by promoter_id) t left join (select promoter_id,group_concat(user_name) as 'userName',user_id as 'userId'
+        from
+        kuaishou_promoter group by promoter_id) tt
+        on t.promoterId = tt.promoter_id
+        where 1 =1
+        <if test="userId != null and userId != ''">
+            and tt.userId = #{userId}
+        </if>
+        order by t.orderNum desc
+
+    </select>
 
 </mapper>