/** * RProjectDao.java 2012/05/07 */ package com.ycsoft.business.dao.project; import java.util.List; import org.springframework.stereotype.Component; import com.ycsoft.beans.project.RProject; import com.ycsoft.business.dto.project.QueryProject; import com.ycsoft.commons.constants.SystemConstants; import com.ycsoft.commons.helper.StringHelper; import com.ycsoft.daos.abstracts.BaseEntityDao; import com.ycsoft.daos.core.Pager; /** * RProjectDao -> R_PROJECT table's operator */ @Component public class RProjectDao extends BaseEntityDao<RProject> { /** * */ private static final long serialVersionUID = -1385040317372974253L; /** * default empty constructor */ public RProjectDao() {} /** * 检查项目编号是否存在 * @param projectNumber * @return false 不存在,true 存在 * @throws Exception */ public boolean checkProjectNumber(String projectNumber) throws Exception { String sql = "select 1 from r_project where project_number = ?"; return this.findUnique(sql, projectNumber) == null ? false : true; } /** * 检查编号 项目顺序码在同一个小区是否存在 * @param projectNumber * @return * @throws Exception */ public List<RProject> checkProjectOrderCode(String projectId, String projectNumber, String[] addrIdArr) throws Exception { String sql = "select t.*,a.addr_name from r_project t,r_project_addr pa,t_address a" + " where t.project_id=pa.project_id and pa.addr_id=a.addr_id" + " and a.addr_id in (" +sqlGenerator.in(addrIdArr)+")"+ " and substr(t.project_number,3,4) = substr(?,3,4)"; return this.createQuery(sql, projectNumber).list(); } public void isInvalid(String projectId,String isValid) throws Exception{ String sql = "update r_project t set t.is_valid=? where t.project_id=?"; this.executeUpdate(sql, isValid,projectId); } public Pager<RProject> queryProject(QueryProject qp,String countyId,Integer start,Integer limit) throws Exception { String sql = "select t.*,wmsys.wm_concat(addr.addr_name) addr_name" + " from r_project t,r_project_addr pa,t_address addr where pa.addr_id=addr.addr_id(+)" + " and t.project_id=pa.project_id(+)"; if(qp != null){ String selCountyId = qp.getCounty_id(); String addrName = qp.getAddr_name(); if(StringHelper.isNotEmpty(addrName)){ sql += " and addr.addr_name like '%"+addrName+"%'"; if(StringHelper.isNotEmpty(selCountyId)){ sql += " and addr.county_id='"+selCountyId+"'"; } } if(StringHelper.isNotEmpty(selCountyId)){ countyId = selCountyId; } String projectNumber = qp.getProject_number(); if(StringHelper.isNotEmpty(projectNumber)){ sql += " and t.project_number='"+projectNumber+"'"; } String projectName = qp.getProject_name(); if(StringHelper.isNotEmpty(projectName)){ sql += " and t.project_name like '%"+projectName+"%'"; } String startDate = qp.getStart_date(); if(StringHelper.isNotEmpty(startDate)){ sql += " and t.create_date >=to_date('"+startDate+"','yyyy-mm-dd')"; } String endDate = qp.getEnd_date(); if(StringHelper.isNotEmpty(endDate)){ sql += " and t.create_date <=to_date('"+endDate+"','yyyy-mm-dd')"; } } if(!countyId.equals(SystemConstants.COUNTY_ALL)){ sql += " and t.county_id='"+countyId+"'"; } sql += "group by t.project_id,t.project_number,t.project_name,t.project_type,t.pre_start_date," +"t.start_date,t.pre_end_date,t.end_date,t.plan_num,t.real_num,t.plan_users_1,t.plan_income_1," +"t.plan_users_2,t.plan_income_2,t.plan_users_3,t.plan_income_3,t.plan_users_4,t.plan_income_4," +"t.plan_users_5,t.plan_income_5,t.optic_cable_length,t.electric_cable_length,t.optical_node_number," +"t.project_plan_money,t.project_final_money,t.status,t.create_date,t.change_date,t.is_valid," +"t.county_id,t.remark order by t.create_date,t.change_date desc"; return this.createQuery(sql).setStart(start).setLimit(limit).page(); } }