diff --git a/build.gradle b/build.gradle index e04d5cd..bd76233 100644 --- a/build.gradle +++ b/build.gradle @@ -22,12 +22,11 @@ dependencies { compile( "org.apache.poi:poi:3.16", "org.apache.poi:poi-excelant:3.16", - "log4j:log4j:1.2.17", - "commons-logging:commons-logging:1.2", "ch.ethz.ganymed:ganymed-ssh2:build210", "org.apache.velocity:velocity:1.6.4", "com.squareup.okhttp3:okhttp:3.14.1", - "com.belerweb:pinyin4j:2.5.1" + "com.belerweb:pinyin4j:2.5.1", + "org.slf4j:slf4j-api:1.7.28" ) } @@ -55,7 +54,7 @@ uploadArchives { authentication(userName: NEXUS_USERNAME, password: NEXUS_PASSWORD) } pom.project { - version '1.0.5' + version '1.1.2' artifactId ARTIFACT_Id groupId GROUP_ID packaging TYPE diff --git a/src/main/java/com/taover/util/UtilExcel.java b/src/main/java/com/taover/util/UtilExcel.java index 7528048..6dbeb6b 100644 --- a/src/main/java/com/taover/util/UtilExcel.java +++ b/src/main/java/com/taover/util/UtilExcel.java @@ -10,8 +10,6 @@ import java.util.HashMap; import java.util.List; import java.util.Map; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.hssf.usermodel.HSSFWorkbook; import org.apache.poi.hssf.util.HSSFColor; @@ -68,16 +66,8 @@ public class UtilExcel { * @param data * @param path */ - public static File saveExcelFromListString(String sheetName, List data, String path){ - Log log = LogFactory.getLog(UtilExcel.class); - Workbook wb = null; - try { - wb = UtilExcel.getWorkbook(path, false); - } catch (Exception e1) { - e1.printStackTrace(); - log.error(e1.getStackTrace().toString()+"保存excel文件失败,失败原因不能获取Workbook对象!msg="+e1.getMessage()); - return null; - } + public static File saveExcelFromListString(String sheetName, List data, String path) throws Exception{ + Workbook wb = UtilExcel.getWorkbook(path, false); //创建Excel工作簿对象 Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 for(int i=0; i> data, String path){ - Log log =LogFactory.getLog(UtilExcel.class); - Workbook wb = null; - try { - wb = UtilExcel.getWorkbook(path, false); - } catch (Exception e1) { - e1.printStackTrace(); - log.error(e1.getStackTrace().toString()+"保存excel文件失败,失败原因不能获取Workbook对象!msg="+e1.getMessage()); - return; - } + public static void saveExcel(String sheetName, List> data, String path) throws Exception{ + Workbook wb = UtilExcel.getWorkbook(path, false); //创建Excel工作簿对象 Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 for(int i=0; i> data, String path, List backColorList){ - Log log =LogFactory.getLog(UtilExcel.class); - Workbook wb = null; - try { - wb = UtilExcel.getWorkbook(path, false); - } catch (Exception e1) { - e1.printStackTrace(); - log.error(e1.getStackTrace().toString()+"保存excel文件失败,失败原因不能获取Workbook对象!msg="+e1.getMessage()); - return; - } + public static void saveExcel(String sheetName, List> data, String path, List backColorList) throws Exception{ + Workbook wb = UtilExcel.getWorkbook(path, false); Map cellStyleMap = new HashMap(); Sheet sheet = wb.createSheet(sheetName);//创建Excel工作表对象 for(int i=0; i> readExcel(String filepath){ + public static List> readExcel(String filepath) throws Exception{ File file = new File(filepath); List> result = new ArrayList>(); if(!file.exists()){ return result; } - Log log = LogFactory.getLog(UtilExcel.class); - Workbook wb = null; - try { - wb = UtilExcel.getWorkbook(filepath, true); - } catch (Exception e1) { - e1.printStackTrace(); - log.error(e1.getStackTrace().toString()+"保存excel文件失败,失败原因不能获取Workbook对象!msg="+e1.getMessage()); - return new ArrayList>(); + Workbook wb = UtilExcel.getWorkbook(filepath, true); + return readExcelBySheetIndex(filepath, wb.getActiveSheetIndex()); + } + + /** + * 读取excel表--所有工作表 + * @param path + */ + public static List> readExcelAllSheet(String filepath) throws Exception{ + File file = new File(filepath); + List> result = new ArrayList>(); + if(!file.exists()){ + return result; + } + Workbook wb = UtilExcel.getWorkbook(filepath, true); + int sheetNumber = wb.getNumberOfSheets(); + + for(int sheetIndex=0; sheetIndex> readExcelBySheetIndex(String filepath, int sheetIndex) throws Exception{ + File file = new File(filepath); + List> result = new ArrayList>(); + if(!file.exists()){ + return result; } + Workbook wb = UtilExcel.getWorkbook(filepath, true); //创建Excel工作簿对象 DecimalFormat df = new DecimalFormat("0"); - Sheet sheet = wb.getSheetAt(wb.getActiveSheetIndex()); + Sheet sheet = wb.getSheetAt(sheetIndex); int start = sheet.getFirstRowNum(); int end = sheet.getLastRowNum(); if(end > UtilExcel.maxExcelRowNum){ @@ -309,7 +309,13 @@ public class UtilExcel { public static void main(String args[]){ String filepath = "C:\\Users\\root\\Desktop\\千丁-6.27.xlsx"; - List> data = UtilExcel.readExcel(filepath); + List> data = null; + try { + data = UtilExcel.readExcel(filepath); + } catch (Exception e) { + // TODO Auto-generated catch block + e.printStackTrace(); + } List styleList = new ArrayList(); for(int i=0; i logByClassName = new HashMap(); + private static Map logByClassName = new HashMap(); /** * 输出日志文本 @@ -19,9 +19,9 @@ public class UtilLog { */ public static void infoForMessage(String message, Class infoClass){ String className = infoClass.getName(); - Log log = logByClassName.get(infoClass.getName()); + Logger log = logByClassName.get(infoClass.getName()); if(log == null){ - log = LogFactory.getLog(infoClass); + log = LoggerFactory.getLogger(infoClass); if(log == null){ return; } @@ -49,9 +49,9 @@ public class UtilLog { */ public static void errorForMessage(String message, Class infoClass){ String className = infoClass.getName(); - Log log = logByClassName.get(infoClass.getName()); + Logger log = logByClassName.get(infoClass.getName()); if(log == null){ - log = LogFactory.getLog(infoClass); + log = LoggerFactory.getLogger(infoClass); if(log == null){ return; } diff --git a/src/main/java/com/taover/util/UtilObject.java b/src/main/java/com/taover/util/UtilObject.java index edd2f3c..3231634 100644 --- a/src/main/java/com/taover/util/UtilObject.java +++ b/src/main/java/com/taover/util/UtilObject.java @@ -298,6 +298,32 @@ public class UtilObject { return result; } + public static E mapToObject(Map dataMap, Class beanClass) throws Exception{ + if(beanClass == null){ + return null; + } + E result = beanClass.newInstance(); + Iterator keyIter = dataMap.keySet().iterator(); + while(keyIter.hasNext()){ + String keyName = keyIter.next(); + String camelName = UtilString.camelName(keyName); + Object keyValue = dataMap.get(keyName); + + if(keyValue == null){ + continue; + } + + try { + Field keyField = beanClass.getDeclaredField(camelName); + keyField.setAccessible(true); + keyField.set(result, keyValue); + } catch (Exception e) { + e.printStackTrace(); + } + } + return result; + } + public static void main(String args[]){ class Temp2{ diff --git a/src/main/java/com/taover/util/UtilProperties.java b/src/main/java/com/taover/util/UtilProperties.java index 0321404..5f08ee1 100644 --- a/src/main/java/com/taover/util/UtilProperties.java +++ b/src/main/java/com/taover/util/UtilProperties.java @@ -8,12 +8,7 @@ import java.io.PrintWriter; import java.io.StringWriter; import java.util.Properties; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; - public class UtilProperties { - Log log = LogFactory.getLog(this.getClass()); - public static String getPropertiesContent(String fileName){ InputStream inStream = UtilProperties.class.getClassLoader().getResourceAsStream("/conf/"+fileName); try { diff --git a/src/main/java/com/taover/util/UtilTemplate.java b/src/main/java/com/taover/util/UtilTemplate.java index d479d60..71d3682 100644 --- a/src/main/java/com/taover/util/UtilTemplate.java +++ b/src/main/java/com/taover/util/UtilTemplate.java @@ -1,14 +1,11 @@ package com.taover.util; -import java.io.PrintWriter; import java.io.StringWriter; import java.util.Iterator; import java.util.Map; import java.util.Properties; import java.util.Set; -import org.apache.commons.logging.Log; -import org.apache.commons.logging.LogFactory; import org.apache.velocity.Template; import org.apache.velocity.VelocityContext; import org.apache.velocity.app.VelocityEngine; @@ -21,7 +18,7 @@ public class UtilTemplate { * @param data * @return */ - public static String renderTemplateClass(String templateClassPath, Map data){ + public static String renderTemplateClass(String templateClassPath, Map data) throws Exception{ //初始化 VelocityEngine ve = new VelocityEngine(); Properties p = new Properties(); @@ -32,14 +29,7 @@ public class UtilTemplate { p.put(VelocityEngine.OUTPUT_ENCODING, "UTF-8"); p.put(VelocityEngine.ENCODING_DEFAULT, "UTF-8"); p.put("file.resource.loader.class", "org.apache.velocity.runtime.resource.loader.ClasspathResourceLoader"); - try { - ve.init(p); - } catch (Exception e) { - StringWriter sw = new StringWriter(); - e.printStackTrace(new PrintWriter(sw, true)); - Log log = LogFactory.getLog(UtilTemplate.class); - log.error(sw.toString()); - } + ve.init(p); //取得VelocityContext对象 VelocityContext context = new VelocityContext(); //向context中放入要在模板中用到的数据对象 @@ -57,16 +47,9 @@ public class UtilTemplate { } Template template; StringWriter sw = new StringWriter(); - try { - template = ve.getTemplate(templateClassPath, "UTF-8"); - //合并输出 - template.merge( context, sw); - } catch (Exception e) { - StringWriter swE = new StringWriter(); - e.printStackTrace(new PrintWriter(swE, true)); - Log log = LogFactory.getLog(UtilTemplate.class); - log.error(sw.toString()); - } + template = ve.getTemplate(templateClassPath, "UTF-8"); + //合并输出 + template.merge( context, sw); return sw.toString(); } } diff --git a/src/test/java/TempExcel.java b/src/test/java/TempExcel.java new file mode 100644 index 0000000..13d672c --- /dev/null +++ b/src/test/java/TempExcel.java @@ -0,0 +1,218 @@ +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Iterator; +import java.util.List; +import java.util.Map; + +import com.taover.util.UtilExcel; + +public class TempExcel { + public static void main(String[] args){ + dealExcel(); + } + + public static final String SEPARATE_CONSIGNEE_MOBILE = "__"; + public static final int EXCEL_TIANMAO_CONSIGNEE_INDEX = 14; + public static final int EXCEL_TIANMAO_MOBILE_INDEX = 18; + public static final int EXCEL_TIANMAO_ORDERDATE_INDEX = 20; + public static final int EXCEL_TIANMAO_GOODSNUMBER_INDEX = 26; + public static final int EXCEL_JD_CONSIGNEE_INDEX = 14; + public static final int EXCEL_JD_MOBILE_INDEX = 16; + public static final int EXCEL_JD_ORDERDATE_INDEX = 24; + public static final int EXCEL_JD_GOODSNUMBER_INDEX = 3; + + public static void dealExcel(){ + try { + List> tianmaoData = UtilExcel.readExcel("D:\\tempexcel\\tianmao.xlsx"); + List> jdData = UtilExcel.readExcel("D:\\tempexcel\\jd.xls"); + tianmaoData.remove(0); + jdData.remove(0); + + //按下单人及下单手机号分类 + Map>> separateData = new HashMap>>(); + for(int i=0; i tempData = tianmaoData.get(i); + injectMap(separateData, getNameAndMobileByTianmao(tempData), tempData); + } + for(int i=0; i tempData = jdData.get(i); + injectMap(separateData, getNameAndMobileByJd(tempData), tempData); + } + + //分析下单分类 + List analysisData = new ArrayList(); + Iterator keyIter = separateData.keySet().iterator(); + while(keyIter.hasNext()){ + String keyName = keyIter.next(); + List> keyData = separateData.get(keyName); + if(keyData.size() <= 1){ + continue; + } + + String[] keyNameSep = keyName.split(TempExcel.SEPARATE_CONSIGNEE_MOBILE); + if(keyNameSep.length == 4){ + SeparateAnalysisInfo anaInfo = new SeparateAnalysisInfo(keyNameSep[0], keyNameSep[1], keyData, Integer.valueOf(keyNameSep[2]), Integer.valueOf(keyNameSep[3])); + if(anaInfo.getDescList().size() > 1){ + analysisData.add(anaInfo); + } + } + } + + //打印信息,保存信息 + List> resultInfo = new ArrayList>(); + List blankRow = new ArrayList(); + for(int i=0; i userInfo = new ArrayList(); + userInfo.add("收货人:"+item.getConsignee()); + userInfo.add("电话号:"+item.getMobile()); + resultInfo.add(userInfo); + + //下单信息列 + List descInfo = new ArrayList(); + descInfo.add("下单简述"); + for(int j=0; j>> separateData, String keyName, List keyValue){ + if(separateData.containsKey(keyName)){ + separateData.get(keyName).add(keyValue); + }else{ + List> tempData = new ArrayList>(); + tempData.add(keyValue); + separateData.put(keyName, tempData); + } + } + + public static String getNameAndMobileByTianmao(List data){ + String name = data.get(EXCEL_TIANMAO_CONSIGNEE_INDEX).toString(); + String mobile = data.get(EXCEL_TIANMAO_MOBILE_INDEX).toString(); + return name+SEPARATE_CONSIGNEE_MOBILE+mobile+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_ORDERDATE_INDEX+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_GOODSNUMBER_INDEX; + } + + public static String getNameAndMobileByJd(List data){ + String name = data.get(EXCEL_JD_CONSIGNEE_INDEX).toString(); + String mobile = data.get(EXCEL_JD_MOBILE_INDEX).toString(); + return name+SEPARATE_CONSIGNEE_MOBILE+mobile+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_ORDERDATE_INDEX+SEPARATE_CONSIGNEE_MOBILE+EXCEL_TIANMAO_GOODSNUMBER_INDEX; + } +} + +class SeparateAnalysisInfo{ + private String consignee; + private String mobile; + private List descList; + private List> orderData; + + public SeparateAnalysisInfo(String consignee, String mobile, List> data, int excelOrderDateIndex, int excelGoodsNumberIndex){ + this.consignee = consignee; + this.mobile = mobile; + this.orderData = data; + + for(int i=0; i dataItem = data.get(i); + if(dataItem.get(excelOrderDateIndex) == null){ + System.out.println("没有下单日期信息:"+this.consignee+"__"+this.mobile); + continue; + } + if(dataItem.get(excelGoodsNumberIndex) == null){ + System.out.println("没有商品数量信息:"+this.consignee+"__"+this.mobile); + continue; + } + + String orderDate = dataItem.get(excelOrderDateIndex).toString(); + if(orderDate.contains("-")){ + orderDate = orderDate.substring(0, 10); + }else{ + String[] dateInfo = orderDate.split(" "); + if(dateInfo.length > 0){ + orderDate = dateInfo[0].replace("/", "-"); + } + } + String goodsNumber = dataItem.get(excelGoodsNumberIndex).toString(); + this.addDescListItem(orderDate, goodsNumber); + } + } + + public String getConsignee() { + return consignee; + } + public void setConsignee(String consignee) { + this.consignee = consignee; + } + public String getMobile() { + return mobile; + } + public void setMobile(String mobile) { + this.mobile = mobile; + } + public List getDescList() { + return descList; + } + public void setDescList(List descList) { + this.descList = descList; + } + + public void addDescListItem(String orderDate, String goodsNumber){ + if(this.descList == null){ + this.descList = new ArrayList(); + } + String separateStr = "__"; + + //检查是否有重复日期的情况 + boolean existsDate = false; + for(int i=0; i 1){ + String[] tempDataGoods = tempData[1].split("件"); + if(tempDataGoods.length > 0){ + try{ + int totalNumber = Integer.valueOf(tempDataGoods[0]).intValue()+Integer.valueOf(goodsNumber).intValue(); + this.descList.set(i, orderDate+separateStr+totalNumber+"件"); + }catch(Exception e){ + e.printStackTrace(); + } + } + } + + break; + } + } + if(!existsDate){ + this.descList.add(orderDate+separateStr+goodsNumber+"件"); + } + } + + public List> getOrderData() { + return orderData; + } + public void setOrderData(List> orderData) { + this.orderData = orderData; + } + + public void addOrderDataItem(List orderData){ + if(this.orderData == null){ + this.orderData = new ArrayList>(); + } + this.orderData.add(orderData); + } +} -- libgit2 0.21.2