portal web service

DemandDao.java 19KB

    package com.ekexiu.portal.dao; import java.sql.Connection; import java.sql.PreparedStatement; import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.Collections; import java.util.List; import org.jfw.apt.annotation.Nullable; import org.jfw.apt.orm.annotation.dao.Column; import org.jfw.apt.orm.annotation.dao.DAO; import org.jfw.apt.orm.annotation.dao.method.From; import org.jfw.apt.orm.annotation.dao.method.OrderBy; import org.jfw.apt.orm.annotation.dao.method.operator.Insert; import org.jfw.apt.orm.annotation.dao.method.operator.QueryVal; import org.jfw.apt.orm.annotation.dao.method.operator.SelectList; import org.jfw.apt.orm.annotation.dao.method.operator.SelectOne; import org.jfw.apt.orm.annotation.dao.method.operator.UpdateWith; import org.jfw.apt.orm.annotation.dao.param.Set; import org.jfw.apt.orm.core.defaultImpl.IntHandler; import org.jfw.util.PageQueryResult; import org.jfw.util.exception.JfwBaseException; import com.ekexiu.portal.po.Demand; @DAO public abstract class DemandDao { @Insert public abstract int insert(Connection con,Demand demand)throws SQLException; @UpdateWith @From(Demand.class) public abstract int updateDemandStatus(Connection con,String demandId,@Set String demandStatus,@Set String closeTime)throws SQLException; @SelectOne @Nullable public abstract Demand queryOne(Connection con,String demandId)throws SQLException; @QueryVal @Column(handlerClass=IntHandler.class,value="COUNT(1)") @From(Demand.class) public abstract int queryCountByStatus(Connection con,String demander,String demandStatus)throws SQLException, JfwBaseException; @QueryVal @Column(handlerClass=IntHandler.class,value="COUNT(1)") @From(Demand.class) public abstract int queryCountStatus(Connection con,String demandStatus)throws SQLException, JfwBaseException; @SelectList @OrderBy("ORDER BY CREATE_TIME DESC") public abstract List<Demand> queryForOrg(Connection con,String orgId)throws SQLException; @SelectList @OrderBy("ORDER BY CREATE_TIME DESC") public abstract List<Demand> queryByDemander(Connection con,String demander)throws SQLException; public PageQueryResult<Demand> pageQueryByDemander(Connection con,String demander,String demandStatus,int sortType,int pageSize,int pageNo) throws SQLException{ int total = 0; PageQueryResult<Demand> queryResult = new PageQueryResult<Demand>(); int index = 1; boolean hasDemandStatus = null != demandStatus; StringBuilder sql = new StringBuilder(); sql.append(" WHERE DEMANDER = ?"); if(hasDemandStatus){ sql.append(" AND DEMAND_STATUS = ?"); } StringBuilder whereSql = sql; sql = new StringBuilder(); sql.append("SELECT COUNT(1) FROM DEMAND"); sql.append(whereSql); PreparedStatement ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++,demander); if(hasDemandStatus){ ps.setString(index++,demandStatus); } queryResult.setPageSize(pageSize); ResultSet rs = ps.executeQuery(); try{ rs.next(); total = rs.getInt(1); }finally{ try{rs.close();}catch(Exception e1){} } }finally{ try{ps.close();}catch(Exception e2){} } queryResult.setTotal(total); if(0== total){ queryResult.setPageNo(1); queryResult.setData(Collections.<Demand>emptyList()); return queryResult; } index = 1; boolean firstPage = (1 == pageNo); if(firstPage){ queryResult.setPageNo(1); sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,CLOSE_TIME,ORDER_KEY,CREATE_TIME FROM DEMAND"); sql.append(whereSql); sql.append(" ORDER BY CREATE_TIME"); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(pageSize); }else{ int pageNumber = total / pageSize; if(total % pageSize != 0){ ++pageNumber; } if(pageNo > pageNumber){ pageNo = pageNumber; } queryResult.setPageNo(pageNo); --pageNo; int offset = (pageNo * pageSize); sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,CLOSE_TIME,ORDER_KEY,CREATE_TIME FROM DEMAND"); sql.append(whereSql); sql.append(" ORDER BY CREATE_TIME"); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(pageSize).append(" OFFSET ").append(offset); } ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++,demander); if(hasDemandStatus){ ps.setString(index++,demandStatus); } ResultSet rs = ps.executeQuery(); try{ List<Demand> demands = new ArrayList<Demand>(); queryResult.setData(demands); int size = 0; while((size<pageSize) && rs.next()){ ++size; Demand demand = new Demand(); demand.setDemandId(rs.getString(1)); demand.setDemander(rs.getString(2)); demand.setDemandAim(rs.getString(3)); demand.setDemandType(rs.getString(4)); demand.setDemandTitle(rs.getString(5)); String demandContent = rs.getString(6); if(rs.wasNull()){ demandContent = null; } demand.setDemandContent(demandContent); demand.setDemandStatus(rs.getString(7)); String closeTime = rs.getString(8); if(rs.wasNull()){ closeTime = null; } demand.setCloseTime(closeTime); demand.setOrderKey(rs.getLong(9)); demand.setCreateTime(rs.getString(10)); demands.add(demand); } return queryResult; }finally{ try{rs.close();}catch(Exception e3){} } }finally{ try{ps.close();}catch(Exception e4){} } } public PageQueryResult<Demand> pageQuery(Connection con,String demandStatus,String demandAim,int sortType,int pageSize,int pageNo) throws SQLException{ int total = 0; PageQueryResult<Demand> queryResult = new PageQueryResult<Demand>(); int index = 1; boolean hasDemandAim = null != demandAim; StringBuilder sql = new StringBuilder(); sql.append(" WHERE DEMAND_STATUS = ?"); if(hasDemandAim){ sql.append(" AND DEMAND_AIM = ?"); } StringBuilder whereSql = sql; sql = new StringBuilder(); sql.append("SELECT COUNT(1) FROM DEMAND"); if(whereSql.length()>0){ sql.append(whereSql); } PreparedStatement ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++, demandStatus); if(hasDemandAim){ ps.setString(index++,demandAim); } queryResult.setPageSize(pageSize); ResultSet rs = ps.executeQuery(); try{ rs.next(); total = rs.getInt(1); }finally{ try{rs.close();}catch(Exception e1){} } }finally{ try{ps.close();}catch(Exception e2){} } queryResult.setTotal(total); if(0== total){ queryResult.setPageNo(1); queryResult.setData(Collections.<Demand>emptyList()); return queryResult; } index = 1; boolean firstPage = (1 == pageNo); if(firstPage){ queryResult.setPageNo(1); sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,CLOSE_TIME,ORDER_KEY,CREATE_TIME,ORG_ID FROM DEMAND"); if(whereSql.length()>0){ sql.append(whereSql); } sql.append(" ORDER BY CREATE_TIME"); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(pageSize); }else{ int pageNum = total / pageSize; if(total % pageSize != 0){ ++pageNum; } if(pageNo > pageNum){ pageNo = pageNum; } queryResult.setPageNo(pageNo); --pageNo; int offset = (pageNo * pageSize); sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,CLOSE_TIME,ORDER_KEY,CREATE_TIME,ORG_ID FROM DEMAND"); if(whereSql.length()>0){ sql.append(whereSql); } sql.append(" ORDER BY CREATE_TIME"); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(pageSize).append(" OFFSET ").append(offset); } ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++, demandStatus); if(hasDemandAim){ ps.setString(index++,demandAim); } ResultSet rs = ps.executeQuery(); try{ List<Demand> demands = new ArrayList<Demand>(); queryResult.setData(demands); int size = 0; while((size<pageSize) && rs.next()){ ++size; Demand demand = new Demand(); demand.setDemandId(rs.getString(1)); demand.setDemander(rs.getString(2)); demand.setDemandAim(rs.getString(3)); demand.setDemandType(rs.getString(4)); demand.setDemandTitle(rs.getString(5)); String demandContent = rs.getString(6); if(rs.wasNull()){ demandContent = null; } demand.setDemandContent(demandContent); demand.setDemandStatus(rs.getString(7)); String closeTime = rs.getString(8); if(rs.wasNull()){ closeTime = null; } demand.setCloseTime(closeTime); demand.setOrderKey(rs.getLong(9)); demand.setCreateTime(rs.getString(10)); String orgId = rs.getString(11); if(rs.wasNull()){ orgId = null; } demand.setOrgId(orgId); demands.add(demand); } return queryResult; }finally{ try{rs.close();}catch(Exception e3){} } }finally{ try{ps.close();}catch(Exception e4){} } } public PageQueryResult<Demand> pageQueryOrg(Connection con,String orgId,String demandStatus,int sortType,int pageSize,int pageNo) throws SQLException{ int total = 0; PageQueryResult<Demand> queryResult = new PageQueryResult<Demand>(); int index = 1; boolean hasDemandStatus = null != demandStatus; StringBuilder sql = new StringBuilder(); sql.append(" WHERE DEMAND_TYPE = '2' AND ORG_ID = ? "); if(hasDemandStatus){ sql.append(" AND DEMAND_STATUS = ?"); } StringBuilder whereSql = sql; sql = new StringBuilder(); sql.append("SELECT COUNT(1) FROM DEMAND"); if(whereSql.length()>0){ sql.append(whereSql); } PreparedStatement ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++, orgId); if(hasDemandStatus){ ps.setString(index++,demandStatus); } queryResult.setPageSize(pageSize); ResultSet rs = ps.executeQuery(); try{ rs.next(); total = rs.getInt(1); }finally{ try{rs.close();}catch(Exception e1){} } }finally{ try{ps.close();}catch(Exception e2){} } queryResult.setTotal(total); if(0== total){ queryResult.setPageNo(1); queryResult.setData(Collections.<Demand>emptyList()); return queryResult; } index = 1; boolean firstPage = (1 == pageNo); if(firstPage){ queryResult.setPageNo(1); sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,CLOSE_TIME,ORDER_KEY,CREATE_TIME,ORG_ID FROM DEMAND"); if(whereSql.length()>0){ sql.append(whereSql); } sql.append(" ORDER BY CREATE_TIME"); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(pageSize); }else{ int pageNum = total / pageSize; if(total % pageSize != 0){ ++pageNum; } if(pageNo > pageNum){ pageNo = pageNum; } queryResult.setPageNo(pageNo); --pageNo; int offset = (pageNo * pageSize); sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,CLOSE_TIME,ORDER_KEY,CREATE_TIME,ORG_ID FROM DEMAND"); if(whereSql.length()>0){ sql.append(whereSql); } sql.append(" ORDER BY CREATE_TIME"); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(pageSize).append(" OFFSET ").append(offset); } ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++, orgId); if(hasDemandStatus){ ps.setString(index++,demandStatus); } ResultSet rs = ps.executeQuery(); try{ List<Demand> demands = new ArrayList<Demand>(); queryResult.setData(demands); int size = 0; while((size<pageSize) && rs.next()){ ++size; Demand demand = new Demand(); demand.setDemandId(rs.getString(1)); demand.setDemander(rs.getString(2)); demand.setDemandAim(rs.getString(3)); demand.setDemandType(rs.getString(4)); demand.setDemandTitle(rs.getString(5)); String demandContent = rs.getString(6); if(rs.wasNull()){ demandContent = null; } demand.setDemandContent(demandContent); demand.setDemandStatus(rs.getString(7)); String closeTime = rs.getString(8); if(rs.wasNull()){ closeTime = null; } demand.setCloseTime(closeTime); demand.setOrderKey(rs.getLong(9)); demand.setCreateTime(rs.getString(10)); String orgid = rs.getString(11); if(rs.wasNull()){ orgid = null; } demand.setOrgId(orgid); demands.add(demand); } return queryResult; }finally{ try{rs.close();}catch(Exception e3){} } }finally{ try{ps.close();}catch(Exception e4){} } } public List<Demand> queryByStatus(Connection con,String demandStatus,String demandAim,String subject,String industry,String createTime,long orderKey,int rows,int sortType) throws SQLException{ StringBuilder sql = new StringBuilder(); sql.append("SELECT DEMAND_ID,DEMANDER,DEMAND_AIM,DEMAND_TYPE,DEMAND_TITLE,DEMAND_CONTENT,DEMAND_STATUS,ORDER_KEY,CREATE_TIME FROM DEMAND "); boolean hasDemandAim = null != demandAim; boolean hasSubject = null !=subject; boolean hasIndustry = null != industry; sql.append(" WHERE DEMAND_STATUS = ? AND ORDER_KEY < ? AND CREATE_TIME < ? "); if(hasDemandAim){ sql.append(" AND DEMAND_AIM = ? "); } if(hasSubject){ sql.append(" AND DEMAND_ID IN (SELECT DEMAND_ID FROM DEMAND_SUB_OR_INDUS WHERE SUB_OR_INDUS LIKE ?) "); } if(hasIndustry){ sql.append(" AND DEMAND_ID IN (SELECT DEMAND_ID FROM DEMAND_SUB_OR_INDUS WHERE SUB_OR_INDUS LIKE ?) "); } sql.append(" ORDER BY CREATE_TIME "); if(sortType == 0){ sql.append(" DESC "); } sql.append(" ,ORDER_KEY "); if(sortType == 0){ sql.append(" DESC "); } sql.append(" LIMIT ").append(rows); int index = 1; PreparedStatement ps = con.prepareStatement(sql.toString()); try{ ps.setString(index++, demandStatus); ps.setLong(index++,orderKey); ps.setString(index++,createTime); if(hasDemandAim){ ps.setString(index++,demandAim); } if(hasSubject){ ps.setString(index++,subject); } if(hasIndustry){ ps.setString(index++,industry); } ResultSet rs = ps.executeQuery(); try{ List<Demand> demands = new ArrayList<Demand>(); while(rs.next()){ Demand demand = new Demand(); demand.setDemandId(rs.getString(1)); demand.setDemander(rs.getString(2)); demand.setDemandAim(rs.getString(3)); demand.setDemandType(rs.getString(4)); demand.setDemandTitle(rs.getString(5)); String content = rs.getString(6); if(rs.wasNull()){ content = null; } demand.setDemandContent(content); demand.setDemandStatus(rs.getString(7)); demand.setOrderKey(rs.getLong(8)); demand.setCreateTime(rs.getString(9)); demands.add(demand); } return demands; }finally{ try{rs.close();}catch(Exception e1){} } }finally{ try{ps.close();}catch(Exception e2){} } } }