package Dao; import java.io.Serializable; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; //import java.sql.Date; import java.text.DateFormat; import java.text.ParseException; import java.text.SimpleDateFormat; import java.util.ArrayList; import java.util.Date; import java.util.List; import java.util.regex.Pattern; import Entities.ImportMessage; import Utils.ExcelUtil; import org.apache.commons.lang3.StringUtils; import org.apache.log4j.Logger; import Entities.HouseEntity; import Entities.PageEntity; import Utils.DBUtil; import Utils.UUIDUtils; import org.apache.poi.hssf.usermodel.HSSFDateUtil; import org.apache.poi.ss.usermodel.Cell; import org.apache.poi.ss.usermodel.Row; import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.ss.usermodel.Workbook; import org.springframework.web.multipart.MultipartFile; //import org.springframework.web.multipart.MultipartFile; /**对房源信息进行操作的方法类 * * @author wentao */ public class HouseDao implements Serializable { Logger log= Logger.getLogger("houseCaoZuo-log"); /** * 小区名称正则 */ private static final String CODE_HOUSE_NAME = "^[\\u4e00-\\u9fa5]{2,33}$"; /** * 栋号正则 */ private static final String CODE_BUILDNUMBER = "^.{0,10}$"; /** * 房号正则 */ private static final String CODE_ROOMNUMBER = "^.{0,10}$"; /** * 户型正则 */ private static final String CODE_HOUSETYPE = "^[a-zA-Z0-9_\\u4e00-\\u9fa5]+$"; /** * 面积正则 */ private static final String CODE_AREA = "^.{0,20}$"; /** * 价格正则 */ private static final String CODE_PRICE = "^[0-9]+(.[0-9]{1,3})?$"; /** * 建成年限正则 */ private static final String CODE_COMPLETEYEAR = "([0-9]{3}[1-9]|[0-9]{2}[1-9][0-9]{1}|[0-9]{1}[1-9][0-9]{2}|[1-9][0-9]{3})-(((0[13578]|1[02])-(0[1-9]|[12][0-9]|3[01]))|((0[469]|11)-(0[1-9]|[12][0-9]|30))|(02-(0[1-9]|[1][0-9]|2[0-8])))"; /** * 手机号正则 */ private static final String CODE_PHONE = "^.{0,50}$"; /** * 备注正则 */ private static final String CODE_REMARKS = "^.{0,50}$"; /**去重查询小区名称,用于筛选 * @author wentao * @return */ public List<String> queryHouseName(){ List<String> house_names= new ArrayList<String>(); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); String sql="SELECT DISTINCT HOUSE_NAME FROM HOUSE WHERE DELETE_FLAG='0' ORDER BY HOUSE_ID"; PreparedStatement smt=conn.prepareStatement(sql); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { house_names.add(rs.getString("house_name")); } return house_names; } catch (SQLException e) { log.error("去重查询房源小区名称信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return house_names; //throw new RuntimeException("分页查询房源信息失败",e); }finally { DBUtil.closeConnection(conn); } } /**去重查询房源栋号信息,用于筛选 * @author wentao * @return */ public List<String> queryBuildNumber(){ List<String> buildNumbers= new ArrayList<String>(); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); String sql="SELECT DISTINCT BUILD_NUMBER FROM HOUSE WHERE DELETE_FLAG='0' ORDER BY HOUSE_ID"; PreparedStatement smt=conn.prepareStatement(sql); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { buildNumbers.add(rs.getString("build_number")); } return buildNumbers; } catch (SQLException e) { log.error("去重查询房源栋号信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return buildNumbers; //throw new RuntimeException("分页查询房源信息失败",e); }finally { DBUtil.closeConnection(conn); } } /**去重查询房源户型信息,用于筛选 * @author wentao * @return */ public List<String> queryHouseType(){ List<String> houseTypes= new ArrayList<String>(); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); String sql="SELECT DISTINCT HOUSE_TYPE FROM HOUSE WHERE DELETE_FLAG='0' ORDER BY HOUSE_ID"; PreparedStatement smt=conn.prepareStatement(sql); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { houseTypes.add(rs.getString("house_type")); } return houseTypes; } catch (SQLException e) { log.error("去重查询房源户型信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return houseTypes; //throw new RuntimeException("分页查询房源信息失败",e); }finally { DBUtil.closeConnection(conn); } } /**去重查询房源装修程度信息,用于筛选 * @author wentao * @return */ public List<String> queryRoomStatus(){ List<String> roomStatus= new ArrayList<String>(); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); String sql="SELECT DISTINCT ROOM_STATUS FROM HOUSE WHERE DELETE_FLAG='0' ORDER BY HOUSE_ID"; PreparedStatement smt=conn.prepareStatement(sql); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { roomStatus.add(rs.getString("room_status")); } return roomStatus; } catch (SQLException e) { log.error("去重查询房源装修程度信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return roomStatus; //throw new RuntimeException("分页查询房源信息失败",e); }finally { DBUtil.closeConnection(conn); } } /**分页查询房源信息 * @author wentao * @param currentPage * @param pageSize * @return */ public List<HouseEntity> queryCurrentData(Integer currentPage,Integer pageSize,String queryCurrentDataSql){ //计算查询的起始行 int startNo = (currentPage-1)*pageSize; List<HouseEntity> houses= new ArrayList<HouseEntity>(); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); PreparedStatement smt=conn.prepareStatement(queryCurrentDataSql); smt.setInt(1,startNo); smt.setInt(2, pageSize); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { HouseEntity house=new HouseEntity(); house.setHouseID(rs.getObject("house_id")); house.setHouseName(rs.getString("house_name")); house.setBuildNumber(rs.getString("build_number")); house.setRoomNumber(rs.getString("room_number")); house.setHouseType(rs.getString("house_type")); house.setArea(rs.getString("area")); house.setPrice(rs.getFloat("price")); house.setRoomStatus(rs.getInt("room_status")); house.setCompleteYear(rs.getDate("complete_year")); house.setPhone(rs.getString("phone")); house.setOrderName(rs.getString("order_name")); house.setRemarks(rs.getString("remarks")); houses.add(house); } return houses; } catch (SQLException e) { log.error("分页查询房源信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return houses; //throw new RuntimeException("分页查询房源信息失败",e); }finally { DBUtil.closeConnection(conn); } } /**提供查询总记录数的方法 * @author wentao * @return */ public Integer queryTotalCount(String queryTotalCountSql){ Integer count=0; Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); PreparedStatement smt=conn.prepareStatement(queryTotalCountSql); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { count=rs.getInt(1); } //System.out.println(count); return count; } catch (SQLException e) { log.error("查询房源全部信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return count; //throw new RuntimeException("查询房源全部信息失败",e); }finally { DBUtil.closeConnection(conn); } } /**向页面返回查询的结果实体 * @author wentao * @param * @throws * @param currentPage * @param pageSize * @return */ public PageEntity queryPageEntity(Integer currentPage,Integer pageSize,String queryTotalCountSql,String queryCurrentDataSql){ //封装PageBean分页对象数据 PageEntity pageEntity = new PageEntity(); //设置当前页 pageEntity.setCurrentPage(currentPage); //设置每页显示的记录数 pageEntity.setPageSize(pageSize); HouseDao houseDao = new HouseDao(); /** * 从数据库中查询出总记录数 */ int totalCount = houseDao.queryTotalCount(queryTotalCountSql); //设置总记录数 pageEntity.setTotalCount(totalCount); //设置当前页的数据 /** * 从数据库中查询出当前页的房源数据 */ List<HouseEntity> list = houseDao.queryCurrentData(pageEntity.getCurrentPage(), pageEntity.getPageSize(),queryCurrentDataSql); pageEntity.setData(list); return pageEntity; } /**根据houseid查询房源信息 * @author wentao * @param house_id * @return */ public HouseEntity queryHouseByID(String house_id){ HouseEntity house=new HouseEntity(); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); //delete_flag:删除标记 0:未删除 1:已删除 String sql="SELECT * FROM HOUSE WHERE HOUSE_ID=?"; PreparedStatement smt=conn.prepareStatement(sql); smt.setString(1,house_id); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { house.setHouseID(rs.getObject("house_id")); house.setHouseName(rs.getString("house_name")); house.setBuildNumber(rs.getString("build_number")); house.setRoomNumber(rs.getString("room_number")); house.setHouseType(rs.getString("house_type")); house.setArea(rs.getString("area")); house.setPrice(rs.getFloat("price")); house.setRoomStatus(rs.getInt("room_status")); house.setCompleteYear(rs.getDate("complete_year")); house.setPhone(rs.getString("phone")); house.setOrderName(rs.getString("order_name")); house.setRemarks(rs.getString("remarks")); } return house; } catch (SQLException e) { log.error("根据UUID查询房源信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return house; //throw new RuntimeException("分页查询房源信息失败",e); }finally { DBUtil.closeConnection(conn); } } /** *查询房源信息是否存在 * * * @param houseName * @param buildNumber * @param roomNumber * @return * @author wentao * @time 2018/2/20 */ public List<HouseEntity> checkHouse(String houseName,String buildNumber,String roomNumber){ List<HouseEntity> houseList=new ArrayList<HouseEntity>(); //List<List<HouseEntity>> resultList=new ArrayList<List<HouseEntity>>(); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); //delete_flag:删除标记 0:未删除 1:已删除 String sql="SELECT * FROM HOUSE WHERE HOUSE_NAME=? AND BUILD_NUMBER=? AND ROOM_NUMBER=? AND " + "DELETE_FLAG=0"; PreparedStatement smt=conn.prepareStatement(sql); smt.setString(1,houseName); smt.setString(2,buildNumber); smt.setString(3,roomNumber); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { HouseEntity house=new HouseEntity(); house.setHouseID(rs.getObject("house_id")); house.setHouseName(rs.getString("house_name")); house.setBuildNumber(rs.getString("build_number")); house.setRoomNumber(rs.getString("room_number")); houseList.add(house); } return houseList; } catch (SQLException e) { log.error("查询房源信息是否存在失败",e); DBUtil.rollBack(conn); e.printStackTrace(); HouseEntity house=new HouseEntity(); house.setHouseName("温涛"); houseList.add(house); return houseList; }finally { DBUtil.closeConnection(conn); } } /**编辑时查询房源信息是否存在 * * @param houseName * @param buildNumber * @param roomNumber * @param houseID * @return * @author wentao * @time 2018/2/22 0022 */ public List<HouseEntity> checkHouse(String houseName,String buildNumber,String roomNumber,String houseID){ List<HouseEntity> houseList=new ArrayList<HouseEntity>(); String house_ID=UUIDUtils.addSepc(houseID); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); //delete_flag:删除标记 0:未删除 1:已删除 String sql="SELECT * FROM HOUSE WHERE HOUSE_NAME=? AND BUILD_NUMBER=? AND ROOM_NUMBER=? AND " + "DELETE_FLAG=0 AND HOUSE_ID !=?"; PreparedStatement smt=conn.prepareStatement(sql); smt.setString(1,houseName); smt.setString(2,buildNumber); smt.setString(3,roomNumber); smt.setString(4,house_ID); ResultSet rs=smt.executeQuery(); conn.commit(); while(rs.next()) { HouseEntity house=new HouseEntity(); house.setHouseID(rs.getObject("house_id")); house.setHouseName(rs.getString("house_name")); house.setBuildNumber(rs.getString("build_number")); house.setRoomNumber(rs.getString("room_number")); houseList.add(house); } return houseList; } catch (SQLException e) { log.error("查询房源信息是否存在失败",e); DBUtil.rollBack(conn); e.printStackTrace(); HouseEntity house=new HouseEntity(); house.setHouseName("温涛"); houseList.add(house); return houseList; }finally { DBUtil.closeConnection(conn); } } /**删除房源信息 * @author wentao * @param houseID * @param userID * @return */ public boolean delHouse(String houseID,String userID){ Date deletime=new Date(); SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); Connection conn=null; try { conn=DBUtil.getConnection(); conn.setAutoCommit(false); String sql="update house set delete_flag='1',deleter_id=?,deletime=? where house_id=?"; PreparedStatement smt=conn.prepareStatement(sql); smt.setString(1,userID); smt.setString(2, time.format(deletime)); smt.setString(3, houseID); int delResult=smt.executeUpdate(); conn.commit(); if(delResult==1){ return true; }else{ return false; } } catch (SQLException e) { log.error("删除房源信息失败",e); DBUtil.rollBack(conn); e.printStackTrace(); return false; }finally { DBUtil.closeConnection(conn); } } /**编辑房源信息 * @author wentao * @param * @throws * @param edit_house * @param user_id * @return */ public boolean editHouse(HouseEntity edit_house,String user_id) { Date updatetime=new Date(); SimpleDateFormat time = new SimpleDateFormat("yyyy-MM-dd HH-mm-ss"); String houseID=UUIDUtils.addSepc(edit_house.getHouseID()); Connection editHouseConn=null; try { editHouseConn=DBUtil.getConnection(); editHouseConn.setAutoCommit(false); String editHouse="UPDATE HOUSE SET HOUSE_NAME=?,BUILD_NUMBER=?,ROOM_NUMBER=?,HOUSE_TYPE=?,AREA=?,PRICE=?," + "ROOM_STATUS=?,COMPLETE_YEAR=?,PHONE=?,REMARKS=?,UPDATER_ID=?,UPDATE_TIME=?" + "WHERE HOUSE_ID=?"; PreparedStatement smt=editHouseConn.prepareStatement(editHouse); smt.setString(1, edit_house.getHouseName()); smt.setString(2, edit_house.getBuildNumber()); smt.setString(3, edit_house.getRoomNumber()); smt.setString(4, edit_house.getHouseType()); smt.setString(5, edit_house.getArea()); smt.setDouble(6, edit_house.getPrice()); smt.setInt(7, edit_house.getRoomStatus()); smt.setDate(8, edit_house.getCompleteYear()); smt.setString(9, edit_house.getPhone()); smt.setString(10, edit_house.getRemarks()); smt.setString(11, user_id); smt.setString(12, time.format(updatetime)); smt.setString(13, houseID); int editResult=smt.executeUpdate(); editHouseConn.commit(); if(editResult==1){ return true; }else{ return false; } } catch (SQLException e) { DBUtil.rollBack(editHouseConn); log.error("修改房源信息失败",e); e.printStackTrace(); return false; }finally{ DBUtil.closeConnection(editHouseConn); } } /**添加房源信息实体方法 * @author wentao * @param add_house * @return */ public boolean addHouse(HouseEntity add_house,String userID) { Connection addHouseConn=null; try { addHouseConn=DBUtil.getConnection(); addHouseConn.setAutoCommit(false); String addHouse="INSERT INTO HOUSE (HOUSE_ID,HOUSE_NAME,BUILD_NUMBER,ROOM_NUMBER,HOUSE_TYPE,AREA,PRICE," + "ROOM_STATUS,COMPLETE_YEAR,PHONE,REMARKS,ORDER_NAME,CREATER_ID) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)"; PreparedStatement smt=addHouseConn.prepareStatement(addHouse,new String[]{"house_id"}); smt.setString(1, UUIDUtils.addSepc(add_house.getHouseID())); //System.out.println(add_house.getHouseID()); smt.setString(2, add_house.getHouseName()); smt.setString(3, add_house.getBuildNumber()); smt.setString(4, add_house.getRoomNumber()); smt.setString(5, add_house.getHouseType()); smt.setString(6, add_house.getArea()); smt.setFloat(7, add_house.getPrice()); smt.setInt(8, add_house.getRoomStatus()); smt.setDate(9, add_house.getCompleteYear()); smt.setString(10, add_house.getPhone()); smt.setString(11, add_house.getRemarks()); smt.setString(12, add_house.getOrderName()); smt.setString(13,userID); smt.executeUpdate(); addHouseConn.commit(); //从smt中获取生成的主键 //结果集中包含1行1列 ResultSet rs = smt.getGeneratedKeys(); if(rs.next()){ //这种场景下的结果集,只能通过字段的序号获取值. String addSuccessID = rs.getString(1); log.info("新增的房源主键id是"+addSuccessID); return true; }else{ return false; } } catch (SQLException e) { DBUtil.rollBack(addHouseConn); log.error("新增房源信息失败",e); e.printStackTrace(); return false; }finally{ DBUtil.closeConnection(addHouseConn); } } /**批量添加房源信息实体方法 * @author wentao * @param * @return */ public List<String> addUploadFile(MultipartFile uploadFile,String userID) { Workbook wookbook = ExcelUtil.createWorkbook(uploadFile); //ImportMessage listMessage=new ImportMessage(); List<String> errorList = new ArrayList<String>(); int sheetNumber = wookbook.getNumberOfSheets(); if (sheetNumber != 1) { errorList.add("该Excel【sheet】数量不正确,请下载【正确模板】进行上传操作"); return errorList; } Sheet sheet = wookbook.getSheetAt(0);// 第一个sheet int rows = sheet.getPhysicalNumberOfRows(); if (rows <= 3) {//数据条数校验,第一行为表头,第二行开始为数据 errorList.add("您上传的表格数据为空!"); return errorList; } Row cellsTitle = sheet.getRow(0); int cellNumber = cellsTitle.getLastCellNum(); if (cellNumber != 8) { errorList.add("该Excel列数量不正确,请下载【正确模板】进行上传操作"); return errorList; } String[] titles = {"小区名称", "栋号", "房号", "户型", "面积", "价格", "装修程度", "建成年限", "房主手机号", "备注"}; List<HouseEntity> houseList = new ArrayList<HouseEntity>(); //List<HouseEntity> houseList = new ArrayList<HouseEntity>(); for (int i = 3; i < rows; i++) {//数据校验 Row row = sheet.getRow(i); if (row == null){ continue;} for (int c = 0; c < row.getLastCellNum(); c++) {//设置excel内容为String if (row.getCell(c) != null) row.getCell(c).setCellType(Cell.CELL_TYPE_STRING); } HouseEntity house = new HouseEntity(); int cellColumnIndex = 0;//从第一列开始读取数据 // 小区名称列 String houseName = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(houseName)) { errorList.add("第" + (i + 1) + "行小区名称是空的!"); } else { house.setHouseName(houseName); if (!house.getHouseName().matches(CODE_HOUSE_NAME)) { errorList.add("第" + (i + 1) + "行小区名称不符合规则!"); } } // 栋号列 String buildNumber = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(buildNumber)) { errorList.add("第" + (i + 1) + "行栋号是空的!"); } else { if (!buildNumber.matches(CODE_BUILDNUMBER)) { errorList.add("第" + (i + 1) + "行栋号超出字数限制!"); }else{ try{ house.setBuildNumber(buildNumber); }catch (NumberFormatException e){ errorList.add("第" + (i + 1) + "行栋号不符合规则!"); }} } // 房号列 String roomNumber = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(roomNumber)) { errorList.add("第" + (i + 1) + "行房号是空的!"); } else { if (!roomNumber.matches(CODE_ROOMNUMBER)) { errorList.add("第" + (i + 1) + "行房号超出字数限制!"); }else{ try{ house.setRoomNumber(roomNumber); }catch (NumberFormatException e){ errorList.add("第" + (i + 1) + "行房号不符合规则!"); }} } // 户型列 String houseType = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(houseType)) { errorList.add("第" + (i + 1) + "行户型是空的!"); } else { house.setHouseType(houseType); if (!house.getHouseType().matches(CODE_HOUSETYPE)) { errorList.add("第" + (i + 1) + "行户型不符合规则!"); } } // 面积列 String area = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(area)) { errorList.add("第" + (i + 1) + "行面积是空的!"); } else { try{ if (!area.matches(CODE_AREA)) { errorList.add("第" + (i + 1) + "行面积不符合规则!"); }else{ house.setArea(area); } }catch (NumberFormatException e){ errorList.add("第" + (i + 1) + "行面积不符合规则!"); } } // 价格列 String price = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(price)) { errorList.add("第" + (i + 1) + "行价格是空的!"); } else { try{ if (!price.matches(CODE_PRICE)) { errorList.add("第" + (i + 1) + "行价格不符合规则!"); }else{ house.setPrice(Float.valueOf(price)); } }catch (NumberFormatException e){ errorList.add("第" + (i + 1) + "行价格不符合规则!"); } } // 装修程度列 String roomStatus = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(roomStatus)) { house.setRoomStatus(5); } else { Integer status; if(roomStatus.equals("毛坯")){ status=0; house.setRoomStatus(status); }else if(roomStatus.equals("简装")){ status=1; house.setRoomStatus(status); }else if(roomStatus.equals("中装")){ status=2; house.setRoomStatus(status); }else if(roomStatus.equals("精装")){ status=3; house.setRoomStatus(status); }else if(roomStatus.equals("豪华装")){ status=4; house.setRoomStatus(status); }else{ errorList.add("第" + (i + 1) + "行装修程度不是选择的!"); } } // 建成年限列 String completeYear = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); DateFormat formater = new SimpleDateFormat("yyyy-MM-dd"); if (StringUtils.isEmpty(completeYear)) { house.setCompleteYear(null); } else { try{ Double year=Double.parseDouble(completeYear); String time=formater.format(HSSFDateUtil.getJavaDate(year)); if (!time.matches(CODE_COMPLETEYEAR)) { errorList.add("第" + (i + 1) + "行建成年限不符合规则!"); }else{ house.setCompleteYear(java.sql.Date.valueOf(time)); } }catch (NumberFormatException e){ errorList.add("第" + (i + 1) + "行建成年限不符合规则!"); } } // 房主手机号列 String phone = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (StringUtils.isEmpty(phone)) { errorList.add("第" + (i + 1) + "行房主手机号是空的!"); } else { if (!phone.matches(CODE_PHONE)) { errorList.add("第" + (i + 1) + "行手机号超出字数限制!"); }else{ house.setPhone(phone);} } // 备注列 String remarks = ExcelUtil.getCellValue(row.getCell(cellColumnIndex++)); if (!StringUtils.isEmpty(remarks)) { house.setRemarks(remarks); if (!house.getRemarks().matches(CODE_REMARKS)) { errorList.add("第" + (i + 1) + "行备注不符合规则!"); } } if(errorList.size()==0) { for (HouseEntity houses : houseList) { if (houses.getHouseName().equals(house.getHouseName()) && houses.getRoomNumber().equals(house.getRoomNumber()) && houses.getBuildNumber().equals(house.getBuildNumber())) { errorList.add("第" + (i + 1) + "行的信息已经在表格里存在!请检查表格内容。"); } } } houseList.add(house); } if(errorList.size()==0) { int i=4; for (HouseEntity houses : houseList) { List<HouseEntity> check = checkHouse(houses.getHouseName(), houses.getBuildNumber(), houses.getRoomNumber()); if (check.size() > 0) { for (HouseEntity h : check) { if ("温涛".equals(h.getHouseName())) { errorList.add("第" + (i) + "行的信息查询是否存在时出错,请把表格重新上传一次。"); } else { errorList.add("第" + (i) + "行的房源信息已经在系统中存在了!请检查表格内容是否跟系统中的房源信息重复了。"); } } } i++; } } if (errorList.size() > 0) return errorList; else { Connection addHouseConn=null; try { addHouseConn = DBUtil.getConnection(); addHouseConn.setAutoCommit(false); String addHouse = "INSERT INTO HOUSE (HOUSE_ID,HOUSE_NAME,BUILD_NUMBER,ROOM_NUMBER,HOUSE_TYPE,AREA,PRICE," + "ROOM_STATUS,COMPLETE_YEAR,PHONE,REMARKS,ORDER_NAME,CREATER_ID) VALUES (?,?,?,?,?,?,?,?,?,?,?,?,?)"; PreparedStatement smt = addHouseConn.prepareStatement(addHouse); List<String> correctList = new ArrayList<String>(); int i=0;//用作控制多少条数据时往数据库里插 for (HouseEntity houses : houseList) { smt.setString(1, UUIDUtils.getUUIDStr()); smt.setString(2, houses.getHouseName()); smt.setString(3, houses.getBuildNumber()); smt.setString(4, houses.getRoomNumber()); smt.setString(5, houses.getHouseType()); smt.setString(6, houses.getArea()); smt.setFloat(7, houses.getPrice()); smt.setInt(8, houses.getRoomStatus()); smt.setDate(9, houses.getCompleteYear()); smt.setString(10, houses.getPhone()); smt.setString(11, houses.getRemarks()); smt.setString(12,"批量上传的房源"); smt.setString(13,userID); smt.addBatch(); i++; if(i%10==0){ smt.executeBatch(); //清空暂存的数据,便于下一批 smt.clearBatch(); // i=0; } } smt.executeBatch(); addHouseConn.commit(); correctList.add("导入成功!"); return correctList; }catch (SQLException e) { DBUtil.rollBack(addHouseConn); log.error("批量插入数据库失败",e); e.printStackTrace(); errorList.add("批量插入数据库失败"); return errorList; }finally{ DBUtil.closeConnection(addHouseConn); } } } }
最近下载更多
908701380 LV2
2023年6月3日
hqy966 LV5
2023年1月23日
mmmmmmppp LV10
2022年12月7日
aqin_qin LV1
2022年6月12日
edward_vic LV2
2022年3月8日
asddff LV1
2022年1月6日
swl137985246 LV7
2021年11月26日
2754137495 LV6
2021年7月20日
Azuki1 LV6
2021年6月20日
裤裆很帅 LV16
2021年5月28日