Commit 1dc524df5777ea868c1845b5e490299b1a4dda1c

Authored by unknown
1 parent 18a60f74
Exists in master

1.增加参数支持

src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsDataFileParser.java
@@ -9,6 +9,7 @@ import java.util.List; @@ -9,6 +9,7 @@ import java.util.List;
9 import java.util.Set; 9 import java.util.Set;
10 10
11 import com.taover.bazhuayun.analysis.util.ExcelUtil; 11 import com.taover.bazhuayun.analysis.util.ExcelUtil;
  12 +import com.taover.util.UtilString;
12 13
13 public class GoodsDataFileParser { 14 public class GoodsDataFileParser {
14 private String fileNameIgnorePreffix; 15 private String fileNameIgnorePreffix;
@@ -31,10 +32,15 @@ public class GoodsDataFileParser { @@ -31,10 +32,15 @@ public class GoodsDataFileParser {
31 32
32 public void parse(GroupInfoExcelData groupInfoData, File[] listFiles) throws Exception { 33 public void parse(GroupInfoExcelData groupInfoData, File[] listFiles) throws Exception {
33 for(int i=0; i<listFiles.length; ++i) { 34 for(int i=0; i<listFiles.length; ++i) {
  35 +// if(!listFiles[i].getName().contains("8.24海囤新系统报单(730份)8.23 一般贸易货!法国本土版!兰蔻大粉水400ml(1)")) {
  36 +// continue;
  37 +// }
34 try { 38 try {
  39 + this.logStrBuffer.append("=================文件名称["+listFiles[i].getName()+"]==================\n");
35 this.parseFile(listFiles[i]); 40 this.parseFile(listFiles[i]);
36 }catch(Exception e) { 41 }catch(Exception e) {
37 e.printStackTrace(); 42 e.printStackTrace();
  43 + this.logStrBuffer.append("ERROR:处理报错"+e.getMessage()+"\n");
38 } 44 }
39 } 45 }
40 } 46 }
@@ -50,15 +56,45 @@ public class GoodsDataFileParser { @@ -50,15 +56,45 @@ public class GoodsDataFileParser {
50 return; 56 return;
51 } 57 }
52 58
53 - //写入set  
54 - GoodsInfoExcelDataHeader header = new GoodsInfoExcelDataHeader(this.goodsNamePatternArr, this.goodsSkuNameParrternArr, data.get(0));  
55 - if(!header.available()) {  
56 - this.logStrBuffer.append("=================文件名称["+item.getName()+"]==================\n");  
57 - this.logStrBuffer.append("没找到商品列或规格列\n"); 59 + //计算起始行及表头索引
  60 + int headerRowIndex = 0;
  61 + GoodsInfoExcelDataHeader header = null;
  62 + while(headerRowIndex<data.size()) {
  63 + List<Object> tempHeaderData = data.get(headerRowIndex);
  64 + if(this.notBlankDataCount(tempHeaderData) < 3) {
  65 + ++headerRowIndex;
  66 + continue;
  67 + }
  68 + header = new GoodsInfoExcelDataHeader(this.goodsNamePatternArr, this.goodsSkuNameParrternArr, tempHeaderData);
  69 + if(!header.available()) {
  70 + this.logStrBuffer.append("ERROR:没找到商品列或规格列\n");
  71 + return;
  72 + }
  73 + break;
58 } 74 }
59 - for(int j=1; j<data.size(); ++j) {  
60 - this.rowSet.add(new GoodsInfoRow(groupInfo, header, data.get(j))); 75 +
  76 + //写入结果集
  77 + for(int j=headerRowIndex+1; j<data.size(); ++j) {
  78 + this.rowSet.add(new GoodsInfoRow(groupInfo, header, data.get(j), fileName));
  79 + }
  80 + }
  81 +
  82 + private int notBlankDataCount(List<Object> tempHeaderData) {
  83 + if(tempHeaderData == null || tempHeaderData.isEmpty()) {
  84 + return 0;
  85 + }
  86 + int count = 0;
  87 + for(int i=0; i<tempHeaderData.size(); ++i) {
  88 + Object item = tempHeaderData.get(i);
  89 + if(item == null) {
  90 + continue;
  91 + }
  92 + String itemStr = UtilString.trimByRegexS(item.toString());
  93 + if(!"".equals(itemStr)) {
  94 + ++count;
  95 + }
61 } 96 }
  97 + return count;
62 } 98 }
63 99
64 public List<GoodsInfoRow> getResult() { 100 public List<GoodsInfoRow> getResult() {
src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsInfoExcelDataHeader.java
@@ -14,11 +14,11 @@ public class GoodsInfoExcelDataHeader { @@ -14,11 +14,11 @@ public class GoodsInfoExcelDataHeader {
14 if(item == null) { 14 if(item == null) {
15 continue; 15 continue;
16 } 16 }
17 - if(this.goodsNameIndex == null && StringTool.getStartWithStringIndex(item.toString(), goodsNamePattern) != -1) { 17 + if(this.goodsNameIndex == null && StringTool.getStringIndexByPatternContains(item.toString(), goodsNamePattern) != -1) {
18 this.goodsNameIndex = i; 18 this.goodsNameIndex = i;
19 continue; 19 continue;
20 } 20 }
21 - if(this.goodsSkuNameIndex == null && StringTool.getStartWithStringIndex(item.toString(), goodsSkuNamePattern) != -1) { 21 + if(this.goodsSkuNameIndex == null && StringTool.getStringIndexByPatternContains(item.toString(), goodsSkuNamePattern) != -1) {
22 this.goodsSkuNameIndex = i; 22 this.goodsSkuNameIndex = i;
23 continue; 23 continue;
24 } 24 }
src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/GoodsInfoRow.java
@@ -9,8 +9,9 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{ @@ -9,8 +9,9 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{
9 private String originGoodsSkuName; 9 private String originGoodsSkuName;
10 private String commonGoodsSkuName; 10 private String commonGoodsSkuName;
11 private String senderNickname; 11 private String senderNickname;
  12 + private String fileName;
12 13
13 - public GoodsInfoRow(GroupInfoExcelDataRow groupInfo, GoodsInfoExcelDataHeader header, List<Object> data) { 14 + public GoodsInfoRow(GroupInfoExcelDataRow groupInfo, GoodsInfoExcelDataHeader header, List<Object> data, String fileName) {
14 if(groupInfo != null) { 15 if(groupInfo != null) {
15 this.groupNickname = groupInfo.getGroupName(); 16 this.groupNickname = groupInfo.getGroupName();
16 this.senderNickname = groupInfo.getSendNickname(); 17 this.senderNickname = groupInfo.getSendNickname();
@@ -20,6 +21,7 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{ @@ -20,6 +21,7 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{
20 } 21 }
21 this.originGoodsName = this.getEmptyStrWhenNull(data, header.getGoodsNameIndex()); 22 this.originGoodsName = this.getEmptyStrWhenNull(data, header.getGoodsNameIndex());
22 this.originGoodsSkuName = this.getEmptyStrWhenNull(data, header.getGoodsSkuNameIndex()); 23 this.originGoodsSkuName = this.getEmptyStrWhenNull(data, header.getGoodsSkuNameIndex());
  24 + this.fileName = fileName;
23 } 25 }
24 26
25 private String getEmptyStrWhenNull(List<Object> data, Integer goodsNameIndex) { 27 private String getEmptyStrWhenNull(List<Object> data, Integer goodsNameIndex) {
@@ -37,43 +39,63 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{ @@ -37,43 +39,63 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{
37 return ""; 39 return "";
38 } 40 }
39 } 41 }
40 - 42 +
41 public String getOriginGoodsName() { 43 public String getOriginGoodsName() {
42 return originGoodsName; 44 return originGoodsName;
43 } 45 }
  46 +
44 public void setOriginGoodsName(String originGoodsName) { 47 public void setOriginGoodsName(String originGoodsName) {
45 this.originGoodsName = originGoodsName; 48 this.originGoodsName = originGoodsName;
46 } 49 }
  50 +
47 public String getCommonGoodsName() { 51 public String getCommonGoodsName() {
48 return commonGoodsName; 52 return commonGoodsName;
49 } 53 }
  54 +
50 public void setCommonGoodsName(String commonGoodsName) { 55 public void setCommonGoodsName(String commonGoodsName) {
51 this.commonGoodsName = commonGoodsName; 56 this.commonGoodsName = commonGoodsName;
52 } 57 }
  58 +
53 public String getGroupNickname() { 59 public String getGroupNickname() {
54 return groupNickname; 60 return groupNickname;
55 } 61 }
56 - public void setGroupNickname(String groupName) {  
57 - this.groupNickname = groupName; 62 +
  63 + public void setGroupNickname(String groupNickname) {
  64 + this.groupNickname = groupNickname;
58 } 65 }
  66 +
59 public String getOriginGoodsSkuName() { 67 public String getOriginGoodsSkuName() {
60 return originGoodsSkuName; 68 return originGoodsSkuName;
61 } 69 }
  70 +
62 public void setOriginGoodsSkuName(String originGoodsSkuName) { 71 public void setOriginGoodsSkuName(String originGoodsSkuName) {
63 this.originGoodsSkuName = originGoodsSkuName; 72 this.originGoodsSkuName = originGoodsSkuName;
64 } 73 }
  74 +
65 public String getCommonGoodsSkuName() { 75 public String getCommonGoodsSkuName() {
66 return commonGoodsSkuName; 76 return commonGoodsSkuName;
67 } 77 }
68 - public void setCommonGooodsSkuName(String commonSkuName) {  
69 - this.commonGoodsSkuName = commonSkuName; 78 +
  79 + public void setCommonGoodsSkuName(String commonGoodsSkuName) {
  80 + this.commonGoodsSkuName = commonGoodsSkuName;
70 } 81 }
  82 +
71 public String getSenderNickname() { 83 public String getSenderNickname() {
72 return senderNickname; 84 return senderNickname;
73 } 85 }
  86 +
74 public void setSenderNickname(String senderNickname) { 87 public void setSenderNickname(String senderNickname) {
75 this.senderNickname = senderNickname; 88 this.senderNickname = senderNickname;
76 } 89 }
  90 +
  91 + public String getFileName() {
  92 + return fileName;
  93 + }
  94 +
  95 + public void setFileName(String fileName) {
  96 + this.fileName = fileName;
  97 + }
  98 +
77 @Override 99 @Override
78 public int hashCode() { 100 public int hashCode() {
79 final int prime = 31; 101 final int prime = 31;
@@ -115,12 +137,8 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{ @@ -115,12 +137,8 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{
115 public int compareTo(GoodsInfoRow o) { 137 public int compareTo(GoodsInfoRow o) {
116 if(o == null) { 138 if(o == null) {
117 return 1; 139 return 1;
118 - }  
119 - if(this.equals(o)) {  
120 - return 0;  
121 - }else {  
122 - return this.calcDistince(o);  
123 - } 140 + }
  141 + return this.calcDistince(o);
124 } 142 }
125 143
126 private int calcDistince(GoodsInfoRow o) { 144 private int calcDistince(GoodsInfoRow o) {
@@ -155,6 +173,6 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{ @@ -155,6 +173,6 @@ public class GoodsInfoRow implements Comparable&lt;GoodsInfoRow&gt;{
155 goodsSkuNameDistince = this.originGoodsSkuName.hashCode()-o.originGoodsSkuName.hashCode(); 173 goodsSkuNameDistince = this.originGoodsSkuName.hashCode()-o.originGoodsSkuName.hashCode();
156 } 174 }
157 175
158 - return (int)(1.0*groupDistince/Integer.MAX_VALUE*1000)+(int)(1.0*goodsNameDistince/Integer.MAX_VALUE*100)+(int)(1.0*goodsSkuNameDistince/Integer.MAX_VALUE*10);  
159 - } 176 + return (int)(1.0*groupDistince/Integer.MAX_VALUE*1000+groupDistince==0?0:1000)+(int)(1.0*goodsNameDistince/Integer.MAX_VALUE*100+goodsNameDistince==0?0:100)+(int)(1.0*goodsSkuNameDistince/Integer.MAX_VALUE*10+goodsSkuNameDistince==0?0:10);
  177 + }
160 } 178 }
src/main/java/com/taover/bazhuayun/analysis/script/goodscollect/Main.java
@@ -19,13 +19,13 @@ public class Main { @@ -19,13 +19,13 @@ public class Main {
19 } 19 }
20 20
21 public static void analysisGoodsName() throws Exception { 21 public static void analysisGoodsName() throws Exception {
22 - String[] goodsNamePatternArr = new String[]{"商品名称","商品标题","货品名称","商品名称","商品信息","品名","商品名","商品简称","产品名称","物品名称","货品摘要","发货信息"}; 22 + String[] goodsNamePatternArr = new String[]{"商品名称","商品标题","货品名称","商品名称","商品信息","品名","商品名","商品简称","产品名称","物品名称","货品摘要","发货信息","商家SPU编码"};
23 String[] goodsSkuNameParrternArr = new String[]{"商品规格名","规格","商品规格","规格名称","商品型号"}; 23 String[] goodsSkuNameParrternArr = new String[]{"商品规格名","规格","商品规格","规格名称","商品型号"};
24 - String dataDirPath = "C:\\Users\\Administrator\\Desktop\\悟空家21-25";  
25 - String groupInfoFilePath = dataDirPath + File.separator + "悟空家-仓库群文件-21-25.xlsx";  
26 - String goodsDataFileDirPath = dataDirPath + File.separator + "data";  
27 - String logFilePath = dataDirPath + File.separator + "dealinfo.log";  
28 - String resultDataFilePath = dataDirPath + File.separator + "result.xls"; 24 + String dataDirPath = "C:\\Users\\Administrator\\Desktop\\悟空家数据\\25-27";
  25 + String groupInfoFilePath = dataDirPath + File.separator + "仓库群文件.xlsx";
  26 + String goodsDataFileDirPath = dataDirPath + File.separator + "订单数据";
  27 + String logFilePath = dataDirPath + File.separator + "异常文件信息.log";
  28 + String resultDataFilePath = dataDirPath + File.separator + "程序商品识别结果.xls";
29 29
30 //加载基础数据,文件来源 30 //加载基础数据,文件来源
31 GroupInfoExcelData groupInfoData = new GroupInfoExcelData(); 31 GroupInfoExcelData groupInfoData = new GroupInfoExcelData();
@@ -54,10 +54,11 @@ public class Main { @@ -54,10 +54,11 @@ public class Main {
54 header.add("自选规格"); 54 header.add("自选规格");
55 header.add("仓库群名称"); 55 header.add("仓库群名称");
56 header.add("发文件的人"); 56 header.add("发文件的人");
  57 + header.add("来源文件");
57 data.add(header); 58 data.add(header);
58 59
59 //加入BODY 60 //加入BODY
60 - for(int i=1; i<result.size(); ++i) { 61 + for(int i=0; i<result.size(); ++i) {
61 GoodsInfoRow row = result.get(i); 62 GoodsInfoRow row = result.get(i);
62 List<Object> item = new ArrayList<Object>(); 63 List<Object> item = new ArrayList<Object>();
63 item.add(row.getOriginGoodsName()); 64 item.add(row.getOriginGoodsName());
@@ -66,6 +67,7 @@ public class Main { @@ -66,6 +67,7 @@ public class Main {
66 item.add(row.getCommonGoodsSkuName()); 67 item.add(row.getCommonGoodsSkuName());
67 item.add(row.getGroupNickname()); 68 item.add(row.getGroupNickname());
68 item.add(row.getSenderNickname()); 69 item.add(row.getSenderNickname());
  70 + item.add(row.getFileName());
69 data.add(item); 71 data.add(item);
70 } 72 }
71 73
src/main/java/com/taover/bazhuayun/analysis/script/orderdownload/Main.java
@@ -14,9 +14,9 @@ public class Main { @@ -14,9 +14,9 @@ public class Main {
14 public static final String ossUrlPreffix = "https://8zyun-oss.oss-cn-beijing.aliyuncs.com"; 14 public static final String ossUrlPreffix = "https://8zyun-oss.oss-cn-beijing.aliyuncs.com";
15 15
16 public static void main(String[] args) throws Exception { 16 public static void main(String[] args) throws Exception {
17 - String dirPath = "C:\\Users\\Administrator\\Desktop\\悟空家21-25";  
18 - String urlFileName = "悟空家-仓库群文件-21-25.xlsx";  
19 - String dataDirName = "data"; 17 + String dirPath = "C:\\Users\\Administrator\\Desktop\\悟空家数据\\25-27";
  18 + String urlFileName = "仓库群文件.xlsx";
  19 + String dataDirName = "订单数据";
20 20
21 List<List<Object>> fieldData = ExcelUtil.readExcelSheet(new File(dirPath+File.separator+urlFileName), false); 21 List<List<Object>> fieldData = ExcelUtil.readExcelSheet(new File(dirPath+File.separator+urlFileName), false);
22 ExcelParser<GroupInfoExcelDataBean> parser = new ExcelAnnoParser<GroupInfoExcelDataBean>(); 22 ExcelParser<GroupInfoExcelDataBean> parser = new ExcelAnnoParser<GroupInfoExcelDataBean>();
src/main/java/com/taover/bazhuayun/analysis/util/StringTool.java
@@ -127,6 +127,21 @@ public class StringTool { @@ -127,6 +127,21 @@ public class StringTool {
127 return result; 127 return result;
128 } 128 }
129 129
  130 + public static int getStringIndexByPatternContains(String pattern, String compares[]){
  131 + //参数检验
  132 + if(pattern==null || compares==null){
  133 + return -1;
  134 + }
  135 +
  136 + //循环遍历compares
  137 + for(int i=0; i<compares.length; ++i){
  138 + if(pattern.contains(compares[i])){
  139 + return i;
  140 + }
  141 + }
  142 + return -1;
  143 + }
  144 +
130 public static int getStartWithStringIndex(String pattern, String compares[]){ 145 public static int getStartWithStringIndex(String pattern, String compares[]){
131 //参数检验 146 //参数检验
132 if(pattern==null || compares==null){ 147 if(pattern==null || compares==null){
src/main/java/com/taover/bazhuayun/analysis/web/controller/ExportCenterController.java
@@ -31,9 +31,13 @@ public class ExportCenterController { @@ -31,9 +31,13 @@ public class ExportCenterController {
31 public void wareOrderFile(@RequestParam(name="tenantId", required=true) Integer tenantId, 31 public void wareOrderFile(@RequestParam(name="tenantId", required=true) Integer tenantId,
32 @RequestParam(name="startDate", defaultValue = "") String startDateStr, 32 @RequestParam(name="startDate", defaultValue = "") String startDateStr,
33 @RequestParam(name="endDate", defaultValue = "") String endDateStr, 33 @RequestParam(name="endDate", defaultValue = "") String endDateStr,
  34 + @RequestParam(name="wareCreateStartDate", defaultValue = "") String wareCreateStartDateStr,
  35 + @RequestParam(name="wareCreateEndDate", defaultValue = "") String wareCreateEndDateStr,
34 HttpServletResponse response) { 36 HttpServletResponse response) {
35 Date startDate = new Date(); 37 Date startDate = new Date();
36 Date endDate = new Date(); 38 Date endDate = new Date();
  39 + Date wareCreateStartDate = null;
  40 + Date wareCreateEndDate = null;
37 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); 41 SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
38 if(StringUtils.isNotBlank(startDateStr)) { 42 if(StringUtils.isNotBlank(startDateStr)) {
39 try { 43 try {
@@ -49,10 +53,24 @@ public class ExportCenterController { @@ -49,10 +53,24 @@ public class ExportCenterController {
49 e.printStackTrace(); 53 e.printStackTrace();
50 } 54 }
51 } 55 }
  56 + if(StringUtils.isNotBlank(wareCreateStartDateStr)) {
  57 + try {
  58 + wareCreateStartDate = sdf.parse(wareCreateStartDateStr.substring(0, 10));
  59 + } catch (ParseException e) {
  60 + e.printStackTrace();
  61 + }
  62 + }
  63 + if(StringUtils.isNotBlank(wareCreateEndDateStr)) {
  64 + try {
  65 + wareCreateEndDate = sdf.parse(wareCreateEndDateStr.substring(0, 10));
  66 + } catch (ParseException e) {
  67 + e.printStackTrace();
  68 + }
  69 + }
52 70
53 File orderFile = null; 71 File orderFile = null;
54 try { 72 try {
55 - orderFile = this.exportCenterService.wareOrderFile(tenantId, startDate, endDate); 73 + orderFile = this.exportCenterService.wareOrderFile(tenantId, startDate, endDate, wareCreateStartDate, wareCreateEndDate);
56 } catch (IOException e1) { 74 } catch (IOException e1) {
57 UtilLog.errorForException(e1, this.getClass()); 75 UtilLog.errorForException(e1, this.getClass());
58 return; 76 return;
src/main/java/com/taover/bazhuayun/analysis/web/service/ExportCenterService.java
@@ -20,13 +20,19 @@ public class ExportCenterService { @@ -20,13 +20,19 @@ public class ExportCenterService {
20 @Resource 20 @Resource
21 private JdbcTemplate jdbcTemplate; 21 private JdbcTemplate jdbcTemplate;
22 22
23 - public File wareOrderFile(Integer tenantId, Date startDate, Date endDate) throws IOException { 23 + public File wareOrderFile(Integer tenantId, Date startDate, Date endDate, Date wareCreateStartDate, Date wareCreateEndDate) throws IOException {
24 //查询agentID 24 //查询agentID
25 String agentIdQuery = "select agent_id from wxorder_agent_pc where tenant_id="+tenantId+" limit 1 "; 25 String agentIdQuery = "select agent_id from wxorder_agent_pc where tenant_id="+tenantId+" limit 1 ";
26 Integer agentId = this.jdbcTemplate.queryForObject(agentIdQuery, Integer.class); 26 Integer agentId = this.jdbcTemplate.queryForObject(agentIdQuery, Integer.class);
27 27
28 //查询仓库对应群列表 28 //查询仓库对应群列表
29 String wareGroupQuery = "select wx_group_ssid,wx_group_nickname,name from wxorder_ware where tenant_id="+tenantId; 29 String wareGroupQuery = "select wx_group_ssid,wx_group_nickname,name from wxorder_ware where tenant_id="+tenantId;
  30 + if(wareCreateStartDate != null) {
  31 + wareGroupQuery += " and create_time>'"+new SimpleDateFormat("yyyy-MM-dd").format(wareCreateStartDate)+" 00:00:00' ";
  32 + }
  33 + if(wareCreateEndDate != null) {
  34 + wareGroupQuery += " and create_time<='"+new SimpleDateFormat("yyyy-MM-dd").format(wareCreateEndDate)+" 23:59:59' ";
  35 + }
30 List<Map<String, Object>> groupData = this.jdbcTemplate.queryForList(wareGroupQuery); 36 List<Map<String, Object>> groupData = this.jdbcTemplate.queryForList(wareGroupQuery);
31 37
32 //依据群id,获取数据列表 38 //依据群id,获取数据列表