diff --git a/build.gradle b/build.gradle index d6090e9..417995d 100644 --- a/build.gradle +++ b/build.gradle @@ -46,7 +46,7 @@ dependencies { "com.xuxueli:xxl-job-core:2.1.0", "com.taover:com-taover-repository:2.1.22", - "com.taover:com-taover-easyexcel:2.2.14", + "com.taover:com-taover-easyexcel:2.2.16", "com.taover:com-taover-util:1.1.112", "cn.hutool:hutool-all:5.2.4", "com.taover:com-taover-codegenerate:1.2.11", diff --git a/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelAnnoParser.java b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelAnnoParser.java new file mode 100644 index 0000000..66f32c3 --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelAnnoParser.java @@ -0,0 +1,45 @@ +package com.taover.bazhuayun.analysis.common.exceldeal; + +import java.lang.reflect.Constructor; +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.List; +import java.util.Map.Entry; + +public class ExcelAnnoParser implements ExcelParser{ + public static final String FIELD_NAME_ORIGIN_DATA = "originData"; + + @Override + public List parse(List> fieldData, Class beanClass) throws Exception { + //读取文件 + if(fieldData.isEmpty()) { + return new ArrayList(); + } + + //表头解析 + ExcelHeaderParser headerParser = new ExcelHeaderAnnoParser(); + ExcelHeaderResult headerParserResult = headerParser.parse(fieldData.get(0), beanClass); + + //数据注入 + Constructor cons = beanClass.getDeclaredConstructor(); + cons.setAccessible(true); + List data = new ArrayList(fieldData.size()); + for(int i=1; i reflect : headerParserResult.getHeaderNameMap().entrySet()) { + Field field = reflect.getKey(); + Integer dataIndex = reflect.getValue(); + if(field == null || dataIndex == null || dataIndex >= fieldData.size()) { + continue; + } + field.set(item, fieldData.get(i).get(dataIndex)); + } + for(Field reflect: headerParserResult.getOriginDataFieldList()) { + reflect.set(item, fieldData.get(i)); + } + data.add(item); + } + + return data; + } +} diff --git a/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelHeaderAnnoParser.java b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelHeaderAnnoParser.java new file mode 100644 index 0000000..4876fc8 --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelHeaderAnnoParser.java @@ -0,0 +1,53 @@ +package com.taover.bazhuayun.analysis.common.exceldeal; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ExcelHeaderAnnoParser implements ExcelHeaderParser { + @Override + public ExcelHeaderResult parse(List data, Class headerBeanClass) { + Map fieldNameToIndex = new HashMap(); + List originDataFieldList = new ArrayList(); + + if(data == null || data.isEmpty()) { + return new ExcelHeaderResult(); + } + + Class currClass = headerBeanClass; + while(currClass != null + && !currClass.getSimpleName().equals("Object")) { + Field[] fields = currClass.getDeclaredFields(); + for(int i=0; i data, Class headerBeanClass); +} diff --git a/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelHeaderResult.java b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelHeaderResult.java new file mode 100644 index 0000000..5f6e16e --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelHeaderResult.java @@ -0,0 +1,35 @@ +package com.taover.bazhuayun.analysis.common.exceldeal; + +import java.lang.reflect.Field; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.List; +import java.util.Map; + +public class ExcelHeaderResult { + Map headerNameMap; + List originDataFieldList; + + public ExcelHeaderResult() { + this.headerNameMap = new HashMap(); + this.originDataFieldList = new ArrayList(); + } + + public ExcelHeaderResult(Map headerNameMap, List originDataFieldList) { + this.headerNameMap = headerNameMap; + this.originDataFieldList = originDataFieldList; + } + + public Map getHeaderNameMap() { + return headerNameMap; + } + public void setHeaderNameMap(Map headerNameMap) { + this.headerNameMap = headerNameMap; + } + public List getOriginDataFieldList() { + return originDataFieldList; + } + public void setOriginDataFieldList(List originDataFieldList) { + this.originDataFieldList = originDataFieldList; + } +} diff --git a/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelOriginData.java b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelOriginData.java new file mode 100644 index 0000000..8aaabe4 --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelOriginData.java @@ -0,0 +1,13 @@ +package com.taover.bazhuayun.analysis.common.exceldeal; + +import java.lang.annotation.Documented; +import java.lang.annotation.ElementType; +import java.lang.annotation.Retention; +import java.lang.annotation.RetentionPolicy; +import java.lang.annotation.Target; + +@Retention(RetentionPolicy.RUNTIME) +@Target(ElementType.FIELD) +@Documented +public @interface ExcelOriginData { +} diff --git a/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelParser.java b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelParser.java new file mode 100644 index 0000000..de354d1 --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/common/exceldeal/ExcelParser.java @@ -0,0 +1,7 @@ +package com.taover.bazhuayun.analysis.common.exceldeal; + +import java.util.List; + +public interface ExcelParser { + List parse(List> fieldData, Class beanClass) throws Exception; +} diff --git a/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsDataFileParser.java b/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsDataFileParser.java index bec9c48..4c16a49 100644 --- a/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsDataFileParser.java +++ b/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsDataFileParser.java @@ -31,24 +31,34 @@ public class GoodsDataFileParser { public void parse(GroupInfoExcelData groupInfoData, File[] listFiles) throws Exception { for(int i=0; i> data = ExcelUtil.readExcelSheet(item, false); - if(data.isEmpty()) { - continue; + try { + this.parseFile(listFiles[i]); + }catch(Exception e) { + e.printStackTrace(); } - - //写入set - GoodsInfoExcelDataHeader header = new GoodsInfoExcelDataHeader(this.goodsNamePatternArr, this.goodsSkuNameParrternArr, data.get(0)); - for(int j=1; j> data = ExcelUtil.readExcelSheet(item, false); + if(data.isEmpty()) { + return; + } + + //写入set + GoodsInfoExcelDataHeader header = new GoodsInfoExcelDataHeader(this.goodsNamePatternArr, this.goodsSkuNameParrternArr, data.get(0)); + if(!header.available()) { + this.logStrBuffer.append("=================文件名称["+item.getName()+"]==================\n"); + this.logStrBuffer.append("没找到商品列或规格列\n"); + } + for(int j=1; j getResult() { diff --git a/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsInfoExcelDataHeader.java b/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsInfoExcelDataHeader.java index 2a27745..946f3e1 100644 --- a/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsInfoExcelDataHeader.java +++ b/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsInfoExcelDataHeader.java @@ -25,6 +25,14 @@ public class GoodsInfoExcelDataHeader { } } + public boolean available() { + if(this.goodsNameIndex != null || this.goodsSkuNameIndex != null) { + return true; + }else { + return false; + } + } + public Integer getGoodsNameIndex() { return goodsNameIndex; } diff --git a/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/Main.java b/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/Main.java index a3677a6..4bf2b94 100644 --- a/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/Main.java +++ b/src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/Main.java @@ -19,10 +19,10 @@ public class Main { } public static void analysisGoodsName() throws Exception { - String[] goodsNamePatternArr = new String[]{"商品名称","商品标题","货品名称","商品名称","商品信息","品名","商品型号","商品名","商品简称"}; + String[] goodsNamePatternArr = new String[]{"商品名称","商品标题","货品名称","商品名称","商品信息","品名","商品型号","商品名","商品简称","产品名称"}; String[] goodsSkuNameParrternArr = new String[]{"商品规格名","规格","商品规格","规格名称","商品型号"}; - String dataDirPath = "C:\\Users\\Administrator\\Desktop\\悟空家数据核对-lff"; - String groupInfoFilePath = dataDirPath + File.separator + "groupinfo.csv"; + String dataDirPath = "C:\\Users\\Administrator\\Desktop\\悟空家21-25"; + String groupInfoFilePath = dataDirPath + File.separator + "悟空家-仓库群文件-21-25.xlsx"; String goodsDataFileDirPath = dataDirPath + File.separator + "data"; String logFilePath = dataDirPath + File.separator + "dealinfo.log"; String resultDataFilePath = dataDirPath + File.separator + "result.xls"; @@ -34,7 +34,7 @@ public class Main { //读取文件列表,交由解析器处理 GoodsDataFileParser parser = new GoodsDataFileParser(goodsNamePatternArr, goodsSkuNameParrternArr, groupInfoData); parser.setFileNameIgnorePreffix("【异常物流信息】-"); - parser.parse(groupInfoData, new File(goodsDataFileDirPath).listFiles()); + parser.parse(groupInfoData, new File(goodsDataFileDirPath).listFiles()); //结果写入结果文件 ExcelUtil.getWriter(new File(resultDataFilePath)).write(transListBeanTo2List(parser.getResult())).flush(); diff --git a/src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/GroupInfoExcelDataBean.java b/src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/GroupInfoExcelDataBean.java new file mode 100644 index 0000000..232e5a1 --- /dev/null +++ b/src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/GroupInfoExcelDataBean.java @@ -0,0 +1,55 @@ +package com.taover.bazhuayun.analysis.script.orderdownload; + +import com.taover.bazhuayun.analysis.common.exceldeal.ExcelHeaderName; + +public class GroupInfoExcelDataBean { + @ExcelHeaderName("群名称") + private String groupName; + @ExcelHeaderName("room_wxid") + private String roomWxid; + @ExcelHeaderName("创建时间") + private String createdAt; + @ExcelHeaderName("发送人昵称") + private String senderNickname; + @ExcelHeaderName("文件路径") + private String ossUrl; + @ExcelHeaderName("仓库名称") + private String wareName; + + public String getGroupName() { + return groupName; + } + public void setGroupName(String groupName) { + this.groupName = groupName; + } + public String getRoomWxid() { + return roomWxid; + } + public void setRoomWxid(String roomWxid) { + this.roomWxid = roomWxid; + } + public String getCreatedAt() { + return createdAt; + } + public void setCreatedAt(String createdAt) { + this.createdAt = createdAt; + } + public String getSenderNickname() { + return senderNickname; + } + public void setSenderNickname(String senderNickname) { + this.senderNickname = senderNickname; + } + public String getOssUrl() { + return ossUrl; + } + public void setOssUrl(String ossUrl) { + this.ossUrl = ossUrl; + } + public String getWareName() { + return wareName; + } + public void setWareName(String wareName) { + this.wareName = wareName; + } +} diff --git a/src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/Main.java b/src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/Main.java index 334089a..6c226a8 100644 --- a/src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/Main.java +++ b/src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/Main.java @@ -1,11 +1,38 @@ package com.taover.bazhuayun.analysis.script.orderdownload; +import java.io.File; +import java.util.List; + +import com.taover.bazhuayun.analysis.common.exceldeal.ExcelAnnoParser; +import com.taover.bazhuayun.analysis.common.exceldeal.ExcelParser; +import com.taover.bazhuayun.analysis.util.ExcelUtil; +import com.taover.util.UtilHttpByOkHttp; + +import cn.hutool.core.io.FileUtil; + public class Main { - public static void main(String[] args) { - try { - //时间区间:21号凌晨 25号凌晨 - } catch (Exception e) { - e.printStackTrace(); + public static final String ossUrlPreffix = "https://8zyun-oss.oss-cn-beijing.aliyuncs.com"; + + public static void main(String[] args) throws Exception { + String dirPath = "C:\\Users\\Administrator\\Desktop\\悟空家21-25"; + String urlFileName = "悟空家-仓库群文件-21-25.xlsx"; + String dataDirName = "data"; + + List> fieldData = ExcelUtil.readExcelSheet(new File(dirPath+File.separator+urlFileName), false); + ExcelParser parser = new ExcelAnnoParser(); + List beanData = parser.parse(fieldData, GroupInfoExcelDataBean.class); + for(GroupInfoExcelDataBean item: beanData) { + try { + downloadDatafile(item, dirPath+File.separator+dataDirName); + }catch (Exception e) { + e.printStackTrace(); + } } } + + private static void downloadDatafile(GroupInfoExcelDataBean item, String dataDir) throws Exception { + byte[] byteData = UtilHttpByOkHttp.downloadFile(ossUrlPreffix+"/"+item.getOssUrl(), null); + String fileName = item.getOssUrl().substring(item.getOssUrl().lastIndexOf("/")+1); + FileUtil.writeBytes(byteData, dataDir+File.separator+fileName); + } } -- libgit2 0.21.2