Sfoglia il codice sorgente

销售线索excel导入,监听器获取动态表头demo

yangzian 3 anni fa
parent
commit
4e9999420e

+ 7 - 0
ruixuan-salesLeads/pom.xml

@@ -41,6 +41,13 @@
         </dependency>
 
 
+        <dependency>
+            <groupId>com.alibaba</groupId>
+            <artifactId>easyexcel</artifactId>
+            <version>3.0.5</version>
+        </dependency>
+
+
     </dependencies>
 
 </project>

+ 75 - 7
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/controller/DemoController.java

@@ -1,20 +1,23 @@
 package com.ruixuan.salesLeads.controller;
 
+import com.alibaba.excel.EasyExcel;
 import com.ruixuan.common.core.controller.BaseController;
 import com.ruixuan.common.core.domain.AjaxResult;
 import com.ruixuan.common.core.domain.ResultResponse;
+import com.ruixuan.common.utils.poi.ExcelUtil;
+import com.ruixuan.salesLeads.listener.ImportExcelListener;
+import com.ruixuan.salesLeads.pojo.SalesleadsInfoPojo;
 import com.ruixuan.salesLeads.pojo.TestPojo;
 import com.ruixuan.salesLeads.service.ITestService;
-import io.swagger.annotations.Api;
-import io.swagger.annotations.ApiOperation;
-import io.swagger.annotations.ApiResponse;
-import io.swagger.annotations.ApiResponses;
+import io.swagger.annotations.*;
+import org.apache.poi.ss.formula.functions.T;
 import org.springframework.beans.factory.annotation.Autowired;
-import org.springframework.web.bind.annotation.GetMapping;
-import org.springframework.web.bind.annotation.RequestMapping;
-import org.springframework.web.bind.annotation.RestController;
+import org.springframework.web.bind.annotation.*;
+import org.springframework.web.multipart.MultipartFile;
 
+import java.lang.reflect.Field;
 import java.util.ArrayList;
+import java.util.HashMap;
 import java.util.List;
 import java.util.Map;
 
@@ -49,4 +52,69 @@ public class DemoController extends BaseController {
         return testServiceImpl.selectDemoList();
     }
 
+
+
+
+    @ApiOperation(value = "导入",notes = "swagger不支持上传,请移步使用postman上传仅支持form-data。")
+    @PostMapping(value = "/importExcel")
+    public ResultResponse importExcel(@ModelAttribute
+                                      //@ApiParam("wenjianwenjian") @RequestParam("file") MultipartFile file,
+                                      //@ApiParam("aaa") @RequestParam("aa") String aa,
+                                       TestPojo testPojo) throws Exception{
+
+
+
+         //读取Excel
+        EasyExcel.read(testPojo.getFile().getInputStream(),null,
+                    new ImportExcelListener()).sheet().headRowNumber(1).doRead();
+
+
+        // 从监听中获取结果集
+        List<Map<String,String>> dataList = ImportExcelListener.importDataList;
+        Map<Integer, String> headList = ImportExcelListener.importHeadList;
+
+        logger.info("--结果shuju---{}",dataList);
+        logger.info("--结果表头---{}",headList);
+
+
+
+        //System.out.println("--转化--"+SalesleadsInfoPojo.SalesleadsInfoPojoInit(dataList));
+
+        ImportExcelListener.importDataList.clear();
+        ImportExcelListener.importHeadList.clear();
+
+
+
+
+//        // 得到Class类对象
+//        Class<?> clazz = Class.forName("com.ruixuan.salesLeads.pojo.SalesleadsInfoPojo");
+//
+//        // 获取类的所有属性
+//        Field[] fields = clazz.getDeclaredFields();
+//
+//
+//        Map<String,String> map = new HashMap<>();
+//
+//
+//        for (int i = 0; i < headList.size(); i++) {
+//
+//
+//            for (Field field : fields) {
+//                ApiModelProperty myField2 = field.getAnnotation(ApiModelProperty.class);
+//
+//                System.out.println(myField2.value());
+//                System.out.println(field.getName());
+//
+//                if (headList.containsKey(myField2.value())){
+//                    System.out.println("包含属性---"+field.getName());
+//                }
+//
+//            }
+//
+//        }
+
+        //startPage();
+        return ResultResponse.successMsg("cheng.",null);
+    }
+
 }

+ 88 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/SalesleadsInfoPojo.java

@@ -0,0 +1,88 @@
+package com.ruixuan.salesLeads.pojo;
+
+import com.ruixuan.common.annotation.Excel;
+import io.swagger.annotations.ApiModel;
+import io.swagger.annotations.ApiModelProperty;
+import lombok.Data;
+
+import java.util.ArrayList;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: TODO
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+
+
+@Data
+@ApiModel(value = "salesleadsInfoPojo", description = "销售线索")
+public class SalesleadsInfoPojo {
+
+
+    private int id;
+
+
+    @ApiModelProperty("卖家id")
+    private Long  sellerId;
+
+    @ApiModelProperty("粉丝数")
+    private Long  fansNumber;
+
+     private String gmv;
+     private String mtd;
+
+
+
+     public static List<SalesleadsInfoPojo> SalesleadsInfoPojoInit(List<Map<String,String>> dataList){
+
+         List<SalesleadsInfoPojo> list = new ArrayList<>();
+
+
+         for (Map map : dataList) {
+
+             map.forEach((key,value) ->{
+
+                 String k = key.toString();
+                 switch (k){
+                     case "卖家ID":
+
+                         map.remove("卖家ID");
+                         map.put("sellerId",value);
+                         break;
+
+                     case "粉丝数":
+
+                         map.remove("粉丝数");
+                         map.put("fansNumber",value);
+                         break;
+
+                 }
+
+
+             });
+
+
+         }
+
+
+
+
+
+
+         SalesleadsInfoPojo pojo = new SalesleadsInfoPojo();
+
+         list.add(pojo);
+         return list;
+     }
+
+
+
+
+
+}

+ 6 - 0
ruixuan-salesLeads/src/main/java/com.ruixuan.salesLeads/pojo/TestPojo.java

@@ -4,6 +4,9 @@ package com.ruixuan.salesLeads.pojo;
 import io.swagger.annotations.ApiModel;
 import io.swagger.annotations.ApiModelProperty;
 import lombok.Data;
+import org.springframework.web.multipart.MultipartFile;
+
+import java.util.List;
 
 /**
  * ***************************************************
@@ -25,4 +28,7 @@ public class TestPojo {
     @ApiModelProperty("角色ID")
     private Long roleId;
 
+    @ApiModelProperty("实体中的文件")
+    private MultipartFile file;
+
 }

+ 104 - 0
ruixuan-salesLeads/src/main/java/com/ruixuan/salesLeads/listener/ImportExcelListener.java

@@ -0,0 +1,104 @@
+package com.ruixuan.salesLeads.listener;
+
+import com.alibaba.excel.context.AnalysisContext;
+import com.alibaba.excel.event.AnalysisEventListener;
+import com.alibaba.fastjson.JSON;
+import com.ruixuan.common.utils.StringUtils;
+import org.apache.poi.ss.formula.functions.T;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+import java.util.ArrayList;
+import java.util.HashMap;
+import java.util.List;
+import java.util.Map;
+
+/**
+ * ***************************************************
+ *
+ * @Auther: zianY
+ * @Descipion: TODO
+ * @CreateDate: 2022-05-24
+ * ****************************************************
+ */
+
+public class ImportExcelListener extends AnalysisEventListener<Map<Integer, String>> {
+
+
+    private static final Logger log = LoggerFactory.getLogger(ImportExcelListener.class);
+
+    public static List<Map<String,String>> importDataList = new ArrayList<>();
+
+    public static Map<Integer, String> importHeadList = new HashMap<>();
+
+
+
+    @Override
+    public void invoke(Map<Integer, String> data, AnalysisContext analysisContext) {
+
+        Map<String, String> ObjectMap = new HashMap<>();
+
+
+
+        log.info("解析到的一条数据=====excelRow = {}", JSON.toJSONString(data));
+
+        data.forEach((key,vlue) ->{
+            Object mapKey = importHeadList.get(key);
+            if (StringUtils.isNotNull(mapKey)){
+
+
+                String keyStr = (String)mapKey;
+
+                switch (keyStr){
+                    case "卖家ID":
+
+                        ObjectMap.put("sellerId",vlue);
+                        break;
+
+                    case "粉丝数":
+
+                        ObjectMap.put("fansNumber",vlue);
+                        break;
+
+
+                }
+
+                if ((keyStr).contains("gmv")){
+
+                    String gmv = keyStr;
+                    System.out.println("==gmv=="+gmv);
+
+                    ObjectMap.put("gmv",vlue);
+                }
+
+                if (keyStr.contains("mtd")){
+                    String mtd = keyStr;
+                    System.out.println("==mtd=="+mtd);
+                    ObjectMap.put("mtd",vlue);
+                }
+
+
+
+
+            }
+        });
+
+        importDataList.add(ObjectMap);
+
+
+    }
+
+    @Override
+    public void doAfterAllAnalysed(AnalysisContext analysisContext) {
+        log.info("解析完所有数据===={}",importDataList);
+
+    }
+
+    @Override
+    public void invokeHeadMap(Map<Integer, String> headMap, AnalysisContext context) {
+        log.info("表头数据===excelHead-->>>{}", headMap);
+        importHeadList.putAll(headMap);
+    }
+
+
+}