public void saveWageEmployeeInfo() throws FileNotFoundException { //wage_employee_info先刪除M1,M2 String sqlM1M2 = "delete wage.wage_employee_info where wage_level in('M1','M2')"; int sqlM1M2Count = wageJobMapper.delSql(sqlM1M2); System.out.println("刪除wage.wage_employee_info 包含M1M2的數據"+sqlM1M2Count); String time = getMonday(); // String filename = "D:/微信文件/WeChat Files/Huangpeideng2015/FileStorage/File/2019-12/人員明細表+"+time+".XLSX"; String filename = "D:\\微信文件\\WeChat Files\\Huangpeideng2015\\FileStorage\\File\\2019-12\\12.13\\12.13\\人員明細表+20191216.XLSX"; FileInputStream in = new FileInputStream(filename); Workbook wk = StreamingReader.builder() .rowCacheSize(10) //緩存到內存中的行數,默認是10 .bufferSize(4096) //讀取資源時,緩存到內存的字節大小,默認是1024 .open(in); //打開資 String sqlEmployeeInfo = "insert into wage.wage_employee_info(employee_nbr,hrms_id,employee_group,employee_subgroup," + "wage_range,center_code,major_department_code,major_department,small_department," + "functional_group,[group],position_description,wage_level) values"; String delEmployeeInfo = "delete wage.wage_employee_info\n" + "where id in(select min(id)\n" + "from wage.wage_employee_info\n" + "group by hrms_id\n" + "having count(1) >1) or hrms_id = 0 or hrms_id is null"; String sqlPT = "insert into wage.employee_pt_st_info(hrms_id,wage_level) values"; String delPT = "delete wage.employee_pt_st_info\n" + "where id in(select min(id)\n" + "from wage.employee_pt_st_info\n" + "group by hrms_id\n" + "having count(1) >1) or hrms_id = 0 or hrms_id is null"; //遍歷工作表 Sheet sheet = wk.getSheetAt(0); int i = 0; List<String> containIPT = new ArrayList<>(); containIPT.add("IH"); containIPT.add("PH"); containIPT.add("TH"); List<String> contain = Arrays.asList("M","M1","M2"); for (Row row:sheet) { if(i>0){ List<String> list = new ArrayList<>(); for(int j=0;j<14;j++){ if (j != 2){//排除門店 list.add(row.getCell(j).getStringCellValue()); } } if (row.getCell(3).getStringCellValue().equals("學生")&&!contain.contains(row.getCell(13).getStringCellValue())){ list.set(12,"IH"); } if (row.getCell(3).getStringCellValue().equals("臨時用工")&&!contain.contains(row.getCell(13).getStringCellValue())){ list.set(12,"TH"); } if (row.getCell(11).getStringCellValue()==null||row.getCell(11).getStringCellValue().equals("")){ list.set(10,row.getCell(10).getStringCellValue()); } sqlEmployeeInfo += String.format(" \n ('%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s','%s'),",list.toArray()); String wage_level = list.get(12); if (containIPT.contains(wage_level)){ sqlPT += String.format(" \n ('%s','%s'),",list.get(1),wage_level); } if (i%1000==0){ sqlEmployeeInfo = save2(sqlEmployeeInfo); sqlPT = save(sqlPT); } } i++; } save2(sqlEmployeeInfo); save(sqlPT); int delCount = wageJobMapper.delSql(delEmployeeInfo); System.out.println("EmployeeInfo去重"+delCount); int delCount2 = wageJobMapper.delSql(delPT); System.out.println("employee_pt_st_info去重"+delCount2); System.out.println("操作完成。。。。。。。。。。"); } private String save(String sql){ int num = wageJobMapper.addSql(sql.substring(0,sql.length()-1)); System.out.println(String.format("成功保存%s條信息",num)); sql = "insert into wage.employee_pt_st_info(hrms_id,wage_level) values"; return sql; } private String save2(String sql) { int num = wageJobMapper.addSql(sql.substring(0, sql.length() - 1)); System.out.println(String.format("成功保存%s條信息", num)); sql = "insert into wage.wage_employee_info(employee_nbr,hrms_id,employee_group,employee_subgroup," + "wage_range,center_code,major_department_code,major_department,small_department," + "functional_group,[group],position_description,wage_level) values"; return sql; }