package com.cabletech.business.wplan.plan.dao; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Repository; import com.cabletech.business.resource.model.ResourceInfo; import com.cabletech.business.wplan.plan.model.PatrolResource; import com.cabletech.common.base.BaseDao; import com.cabletech.common.base.SysConstant; import com.cabletech.common.util.Page; /** * 巡检资源关系Dao * * @author zhaobi * @author 杨隽 2012-07-25 添加去除已经退服的所属资源的查询条件 * */ @Repository public class PatrolResourceDao extends BaseDao<PatrolResource, String> { /** * 获取巡检组所属资源 * * @param businesstype * 专业类型 * @param patrolgroupid * 巡检组ID * @return */ public List<Map<String, Object>> getPatrolResource(String businesstype, String patrolgroupid) { StringBuffer sqlBuffer = new StringBuffer(""); sqlBuffer .append(" SELECT DISTINCT RS.RS_ID,RS.RS_TYPE,nvl(zd.zymc,' ') RS_NAME,zd.zdbh stationcode "); sqlBuffer .append(" FROM RES_MAINTENANCE RS JOIN RES_ZDXX zd ON RS.RS_ID=zd.xtbh join res_resourcetype rt on zd.xtbh=rt.xtbh and rt.business_type=rs.rs_type "); sqlBuffer .append(" JOIN VIEW_PATROLGROUP P ON RS.PATROL_GROUP_ID=P.ID where 1=1 AND (zd.STATUS!='" + ResourceInfo.DELETED_STATE + "' or zd.STATUS is null ) "); // 根据巡检组分配 if (StringUtils.isNotBlank(patrolgroupid)) { sqlBuffer.append(" and rs.patrol_group_id='" + patrolgroupid + "'"); } // 根据专业类型分配 if (StringUtils.isNotBlank(businesstype)) { sqlBuffer.append(" and rs.RS_TYPE='" + businesstype + "'"); } sqlBuffer.append(" union SELECT '" + businesstype + "' RS_ID, 'root' RS_TYPE,'站点' RS_NAME,'' STATIONCODE"); sqlBuffer.append(" FROM dual "); sqlBuffer.append(" order by RS_NAME "); logger.info("获取巡检组所属资源sql:" + sqlBuffer.toString()); return this.getJdbcTemplate().queryForList(sqlBuffer.toString()); } /** * 删除巡检计划资源 * * @param planid * String */ public void deleteResource(String planid) { String hql = "delete from PatrolResource pr where pr.planid=? "; this.batchHQLExecute(hql, planid); } /** * 根据巡检计划获取维护资源 * * @param planid * 计划ID * @param page * Page * @return */ public Page getPatrolResourceByPlanid(String planid, Page page) { String sql = getPatrolResourceSQL(planid).toString(); logger.info("根据巡检计划获取维护资源分页sql:" + sql); return super.findSQLPage(page, sql); } /** * 获取巡检资源根据计划 * * @param planid * String * @return */ public List<Map<String, Object>> getPatrolResourceByPlanid(String planid) { String sql = getPatrolResourceSQL(planid).toString(); logger.info("根据巡检计划获取维护资源sql:" + sql); return this.getJdbcTemplate().queryForList(sql); } /** * 根据计划获取巡检资源sql * * @param planid * String * @return */ private StringBuffer getPatrolResourceSQL(String planid) { StringBuffer sqlBuffer = new StringBuffer(""); sqlBuffer .append(" select pr.resource_id,pr.resource_type,rv.NAME,rv.STATIONCODE,rv.ADDRESS,fn_getnamebycode(pr.resource_type,'businesstype') resource_typename"); sqlBuffer .append(" from wplan_patrolresource pr left join rs_resourcerecord_v rv on pr.resource_id=rv.ID and pr.resource_type=rv.TYPE "); sqlBuffer.append(" where pr.plan_id='" + planid + "'"); return sqlBuffer; } /** * 获取巡检资源信息 * * @param rid * 巡检结果ID * @return */ public Map<String, Object> getPatrolResourceInfo(String rid) { StringBuffer sqlBuffer = new StringBuffer(""); sqlBuffer .append(" select distinct e.id,wp.plan_name,e.resource_type,e.arrive_time,e.end_time,e.resource_id,rv.NAME resource_name,e.patrol_group_id, "); sqlBuffer .append(" e.patrolman_id,p.NAME patrolgroupname,p.ORGNAME,pe.name patrolmanname,nvl(pe.mobile,pe.phone) phone "); sqlBuffer .append(" ,fn_getnamebycode(e.resource_type,'BUSINESSTYPE') resource_typename from wplan_executeresult e left join rs_resourcerecord_v rv on rv.ID=e.resource_id and rv.TYPE=e.resource_type "); sqlBuffer .append(" left join view_patrolgroup p on e.patrol_group_id=p.id "); sqlBuffer .append(" left join base_person pe on e.patrolman_id=pe.id left join wplan_patrolinfo wp ON e.PLAN_ID=wp.ID"); sqlBuffer.append(" where e.id = '" + rid + "' "); String sql = sqlBuffer.toString(); logger.info("获取巡检资源基本信息sql:" + sql); return this.getJdbcTemplate().queryForMap(sql); } }