package com.cku.checker; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.IOException; import java.io.InputStream; import java.sql.DriverManager; import java.sql.ResultSet; import java.sql.SQLException; import java.sql.Statement; import java.text.DecimalFormat; import java.util.ArrayList; import java.util.Date; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.poi.hssf.usermodel.HSSFCell; import org.apache.poi.xssf.usermodel.XSSFCell; import org.apache.poi.xssf.usermodel.XSSFRow; import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import com.cku.oa.finance.entity.PaymentChargingItem; import com.mysql.jdbc.Connection; import com.mysql.jdbc.PreparedStatement; /** * 基于石冰老板的收费项标准,生成新的数据 * @author fanhuibin * */ public class ExcelImport { public static void main(String args[]){ ExcelImport i = new ExcelImport(); try { i.doImportCsv(); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } catch (SQLException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void doImport() throws IOException, SQLException{ //查询所有的原来的收费项 Map originalChargingItem = new HashMap(); Connection conn = getConn(); String sql = "select id,name from payment_charging_item"; PreparedStatement pstmt = (PreparedStatement)conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()){ String id = rs.getString(1); String name = rs.getString(2); if(originalChargingItem.containsKey(name)&&!name.equals("藏獒牵犬培训报名费")&&!name.equals("展位费")){ if(name.equals("藏獒配种证明登记费")){ id = "181"; }else{ throw new IOException("重复的收费项"+name); } } originalChargingItem.put(name, id); } //收费项之间的关系 Map>> map = new HashMap>>(); //收费项cab与cku的列表 Map cabItems = new HashMap(); Map ckuItems = new HashMap(); InputStream is = new FileInputStream("C:\\Users\\fanhuibin\\Desktop\\收费对比(CKU CSV)-20170322-2.xlsx"); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); List items = new ArrayList(); XSSFSheet xssfSheet = xssfWorkbook.getSheet("收费调整对比明细"); // 从第 String preKey = ""; String preCabDept = ""; String preCkuDept = ""; for (int rowNum = (4-1); rowNum <= 110; rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); System.out.println(rowNum); if (xssfRow != null) { PaymentChargingItem original = new PaymentChargingItem(); PaymentChargingItem cab = new PaymentChargingItem(); PaymentChargingItem cku = new PaymentChargingItem(); String key = getCellStringValue(xssfRow.getCell(0)).split(" ")[0]; if(!key.trim().equals("")&&!originalChargingItem.containsKey(key)){ continue; } if(!key.trim().equals("")){ preKey = key; }else{ key = preKey; } key = originalChargingItem.get(key); String cabName = getCellStringValue(xssfRow.getCell(1)); String cabPrice = getCellStringValue(xssfRow.getCell(2)); String cabDept = getCellStringValue(xssfRow.getCell(3)); String ckuName = getCellStringValue(xssfRow.getCell(4)); String ckuPrice = getCellStringValue(xssfRow.getCell(5)); String ckuDept = getCellStringValue(xssfRow.getCell(6)); Map> chaifenMap = new HashMap>(); if(map.containsKey(key)){ chaifenMap = map.get(key); }else{ List cabList = new ArrayList(); List ckuList = new ArrayList(); chaifenMap.put("cab", cabList); chaifenMap.put("cku", ckuList); } if(!cabDept.trim().equals("")){ preCabDept = cabDept; }else{ cabDept = preCabDept; } if(!ckuDept.trim().equals("")){ preCkuDept = ckuDept; }else{ ckuDept = preCkuDept; } if(!cabName.trim().equals("")){ cab.setName(cabName); cab.setId("cab"+(rowNum+1)); cab.setPrice(cabPrice); cab.setRemarks(cabDept); cabItems.put(cabName, cab); List cabList = chaifenMap.get("cab"); cabList.add(cabName); } if(!ckuName.trim().equals("")){ cku.setName(ckuName); cku.setId("cku"+(rowNum+1)); cku.setPrice(ckuPrice); cku.setRemarks(ckuDept); ckuItems.put(ckuName, cku); List ckuList = chaifenMap.get("cku"); ckuList.add(ckuName); } map.put(key, chaifenMap); } } conn.setAutoCommit(false); Statement state = (Statement) conn.createStatement(); //插入cab收费项 for(String name:cabItems.keySet()){ PaymentChargingItem i = cabItems.get(name); String dept = i.getRemarks(); //用户管理部 b6aed90fa186432aa16ad45a66410e75 //档案管理部 9df34d25aebc4ceaa7e326acb296c614 //赛事部 e8f30851b7494896a1805d5fa8b87a54 //美容部 eaaaaeff90f34d68a2f704f6ba246911 //培训部 1a8f8d269209469797179133d60a2fc6 //地方俱乐部 0788ef2fb6fc43b7a62fe90489af712f //杭州办事处 8c9825c10d714397b464ec796435748a //重庆办事处 c2ce7357a6a945008a5cd3d264b384f1 if(dept.equals("用户管理部")){ dept = "b6aed90fa186432aa16ad45a66410e75"; }else if(dept.equals("档案管理部")){ dept = "9df34d25aebc4ceaa7e326acb296c614"; }else if(dept.equals("赛事部")){ dept = "e8f30851b7494896a1805d5fa8b87a54"; }else if(dept.equals("美容部")){ dept = "eaaaaeff90f34d68a2f704f6ba246911"; }else if(dept.equals("培训部")){ dept = "1a8f8d269209469797179133d60a2fc6"; }else if(dept.equals("地方俱乐部项目组")){ dept = "0788ef2fb6fc43b7a62fe90489af712f"; }else if(dept.equals("杭州办事处")){ dept = "8c9825c10d714397b464ec796435748a"; }else if(dept.equals("重庆办事处")){ dept = "c2ce7357a6a945008a5cd3d264b384f1"; } String cabAdd = "insert into sa_cab_payment_item values('"+i.getId()+"','"+i.getName()+"','"+i.getPrice()+"','"+dept+"')"; state.addBatch(cabAdd); } //插入cku收费项 for(String name:ckuItems.keySet()){ PaymentChargingItem i = ckuItems.get(name); String ckuAdd = ""; //会员部 b6aed90fa186432aa16ad45a66410e75 //繁殖部 9df34d25aebc4ceaa7e326acb296c614 //协会代收代付 daishoudaifu String dept = i.getRemarks(); if(dept.equals("会员部")){ dept = "b6aed90fa186432aa16ad45a66410e75"; }else if(dept.equals("繁殖部")){ dept = "9df34d25aebc4ceaa7e326acb296c614"; }else if(dept.equals("协会代收代付")){ dept = "daishoudaifu"; } try{ ckuAdd = "insert into sa_cku_payment_item values('"+i.getId()+"','"+i.getName()+"','"+i.getPrice()+"','"+dept+"')"; }catch(Exception e){ e.printStackTrace(); } state.addBatch(ckuAdd); } //插入cku、cab、旧收费项的关系 for(String name:map.keySet()){ String cabIds = ""; String ckuIds = ""; List cabs = map.get(name).get("cab"); List ckus = map.get(name).get("cku"); for(int i=0;i originalChargingItem = new HashMap(); Connection conn = getConn(); String sql = "select id,name from csv_catalog"; PreparedStatement pstmt = (PreparedStatement)conn.prepareStatement(sql); ResultSet rs = pstmt.executeQuery(); while(rs.next()){ String id = rs.getString(1); String name = rs.getString(2); if(originalChargingItem.containsKey(name)){ throw new IOException("重复的收费项"+name); } originalChargingItem.put(name, id); } //收费项之间的关系 Map>> map = new HashMap>>(); //收费项cab与cku的列表 Map cabItems = new HashMap(); Map csvItems = new HashMap(); InputStream is = new FileInputStream("C:\\Users\\fanhuibin\\Desktop\\收费对比(CKU CSV)-20170322-2.xlsx"); XSSFWorkbook xssfWorkbook = new XSSFWorkbook(is); List items = new ArrayList(); XSSFSheet xssfSheet = xssfWorkbook.getSheet("csv"); // 从第 String preKey = ""; String preCabDept = ""; String preCsvDept = ""; for (int rowNum = (4-1); rowNum <= 41; rowNum++) { XSSFRow xssfRow = xssfSheet.getRow(rowNum); System.out.println(rowNum); if (xssfRow != null) { PaymentChargingItem original = new PaymentChargingItem(); PaymentChargingItem cab = new PaymentChargingItem(); PaymentChargingItem csv = new PaymentChargingItem(); String key = getCellStringValue(xssfRow.getCell(0)).split(" ")[0]; if(!key.trim().equals("")&&!originalChargingItem.containsKey(key)){ continue; } if(!key.trim().equals("")){ preKey = key; }else{ key = preKey; } key = originalChargingItem.get(key); String cabName = getCellStringValue(xssfRow.getCell(1)); String cabPrice = getCellStringValue(xssfRow.getCell(2)); String cabDept = getCellStringValue(xssfRow.getCell(3)); String csvName = getCellStringValue(xssfRow.getCell(4)); String csvPrice = getCellStringValue(xssfRow.getCell(5)); String csvDept = getCellStringValue(xssfRow.getCell(6)); Map> chaifenMap = new HashMap>(); if(map.containsKey(key)){ chaifenMap = map.get(key); }else{ List cabList = new ArrayList(); List csvList = new ArrayList(); chaifenMap.put("cab", cabList); chaifenMap.put("csv", csvList); } if(!cabDept.trim().equals("")){ preCabDept = cabDept; }else{ cabDept = preCabDept; } if(!csvDept.trim().equals("")){ preCsvDept = csvDept; }else{ csvDept = preCsvDept; } if(!cabName.trim().equals("")){ cab.setName(cabName); cab.setId("cab"+(rowNum+1)); cab.setPrice(cabPrice); cab.setRemarks(cabDept); cabItems.put(cabName, cab); List cabList = chaifenMap.get("cab"); cabList.add(cabName); } if(!csvName.trim().equals("")){ csv.setName(csvName); csv.setId("csv"+(rowNum+1)); csv.setPrice(csvPrice); csv.setRemarks(csvDept); csvItems.put(csvName, csv); List csvList = chaifenMap.get("csv"); csvList.add(csvName); } map.put(key, chaifenMap); } } conn.setAutoCommit(false); Statement state = (Statement) conn.createStatement(); //插入cab收费项 for(String name:cabItems.keySet()){ PaymentChargingItem i = cabItems.get(name); String dept = i.getRemarks(); //用户管理部 b6aed90fa186432aa16ad45a66410e75 //档案管理部 9df34d25aebc4ceaa7e326acb296c614 //赛事部 e8f30851b7494896a1805d5fa8b87a54 //美容部 eaaaaeff90f34d68a2f704f6ba246911 //培训部 1a8f8d269209469797179133d60a2fc6 //地方俱乐部 0788ef2fb6fc43b7a62fe90489af712f //杭州办事处 8c9825c10d714397b464ec796435748a //重庆办事处 c2ce7357a6a945008a5cd3d264b384f1 if(dept.equals("用户管理部")){ dept = "b6aed90fa186432aa16ad45a66410e75"; }else if(dept.equals("档案管理部")){ dept = "9df34d25aebc4ceaa7e326acb296c614"; }else if(dept.equals("赛事部")){ dept = "e8f30851b7494896a1805d5fa8b87a54"; }else if(dept.equals("美容部")){ dept = "eaaaaeff90f34d68a2f704f6ba246911"; }else if(dept.equals("培训部")){ dept = "1a8f8d269209469797179133d60a2fc6"; }else if(dept.equals("地方俱乐部项目组")){ dept = "0788ef2fb6fc43b7a62fe90489af712f"; }else if(dept.equals("杭州办事处")){ dept = "8c9825c10d714397b464ec796435748a"; }else if(dept.equals("重庆办事处")){ dept = "c2ce7357a6a945008a5cd3d264b384f1"; } String csvAdd = "insert into sa_csv_cab_payment_item values('"+i.getId()+"','"+i.getName()+"','"+i.getPrice()+"','"+dept+"')"; state.addBatch(csvAdd); } //插入csv收费项 for(String name:csvItems.keySet()){ PaymentChargingItem i = csvItems.get(name); String ckuAdd = ""; //会员部 b6aed90fa186432aa16ad45a66410e75 //繁殖部 9df34d25aebc4ceaa7e326acb296c614 //协会代收代付 daishoudaifu String dept = i.getRemarks(); if(dept.equals("会员部")){ dept = "b6aed90fa186432aa16ad45a66410e75"; }else if(dept.equals("繁殖部")){ dept = "9df34d25aebc4ceaa7e326acb296c614"; }else if(dept.equals("协会代收代付")){ dept = "daishoudaifu"; } try{ ckuAdd = "insert into sa_csv_payment_item values('"+i.getId()+"','"+i.getName()+"','"+i.getPrice()+"','"+dept+"')"; }catch(Exception e){ e.printStackTrace(); } state.addBatch(ckuAdd); } //插入cku、csv、旧收费项的关系 for(String name:map.keySet()){ String cabIds = ""; String csvIds = ""; List cabs = map.get(name).get("cab"); List csvs = map.get(name).get("csv"); for(int i=0;i