package com.cabletech.business.resource.dao; import java.util.Iterator; import java.util.List; import java.util.Map; import org.apache.commons.collections.CollectionUtils; import org.apache.commons.collections.MapUtils; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Repository; import com.cabletech.business.resource.model.ResourceInfo; import com.cabletech.common.base.BaseDao; import com.cabletech.common.util.Page; /** * 资源信息Dao * * @author zhaobi * @author 杨隽 2012-07-25 添加getResourceNum()和updateResourceState()方法 * */ @Repository public class ResourceInfoDao extends BaseDao<ResourceInfo, String> { /** * 根据资源编号获取资源信息 * * @param resourceId * String * @return ResourceInfo */ public ResourceInfo view(String resourceId) { StringBuffer sql = new StringBuffer(""); sql.append(" SELECT rz.XTBH,rz.ZYMC,rz.ZDBH FROM RES_ZDXX rz "); sql.append(" WHERE rz.XTBH='"); sql.append(resourceId); sql.append("'"); List<Map<String, Object>> list = super.getJdbcTemplate().queryForList( sql.toString()); if (CollectionUtils.isEmpty(list)) { return null; } ResourceInfo res = new ResourceInfo(); Map<String, Object> map = list.get(0); res.setRsid((String) map.get("XTBH")); res.setStationcode((String) map.get("ZDBH")); res.setResourceName((String) map.get("ZYMC")); return res; } /** * 分页获取资源信息 * * @param page * Page * @param resourceInfo * 资源信息 * @return */ public Page getResourceInfo(ResourceInfo resourceInfo, Page page) { StringBuffer sql = new StringBuffer(""); sql.append(" select v.*,pg.ID patrolgroupid,pg.NAME patrolgroupname,pg.ORGID,pg.ORGNAME from RS_RESOURCERECORD_V v "); sql.append(" left join res_maintenance m on v.ID=m.rs_id and v.TYPE=m.rs_type "); sql.append(" left join view_patrolgroup pg on pg.ORGID=m.maintenance_id and pg.ID=m.patrol_group_id "); sql.append(" where 1=1 "); sql.append(getQueryCondition(resourceInfo)); logger.info("获取资源信息sql:" + sql); return super.findSQLPage(page, sql.toString()); } /** * 获取巡检组维护资源数量 * * @param patrolgroupid * String 巡检组编号 * @return int 维护资源数量 */ public int getResourceNum(String patrolgroupid,String busstype) { if (StringUtils.isBlank(patrolgroupid)) { return 0; } StringBuffer sql = new StringBuffer(""); sql.append(" SELECT COUNT(DISTINCT rz.XTBH) AS NUM "); sql.append(" FROM RES_ZDXX rz join res_resourcetype rt on rz.xtbh=rt.xtbh"); sql.append(" JOIN RES_MAINTENANCE rm "); sql.append(" ON rz.XTBH=rm.RS_ID and rt.business_type=rm.rs_type"); sql.append(" WHERE rm.PATROL_GROUP_ID='"); sql.append(patrolgroupid); sql.append("' "); sql.append(" and rt.business_type='"); sql.append(busstype); sql.append("' AND ( rz.status!='9"); sql.append("' or rz.status is null)"); return super.getJdbcTemplate().queryForInt(sql.toString()); } /** * 更改资源的状态 * * @param rsId * String 资源编号 * @param state * String 资源状态 */ public void updateResourceState(String rsId, String state) { StringBuffer sql = new StringBuffer(""); sql.append(" UPDATE RES_ZDXX SET STATE='"); sql.append(state); sql.append("' WHERE XTBH='"); sql.append(rsId); sql.append("'"); super.getJdbcTemplate().execute(sql.toString()); } /** * 获取查询条件 * * @param resourceInfo * 资源信息 * @return */ private StringBuffer getQueryCondition(ResourceInfo resourceInfo) { StringBuffer sql = new StringBuffer(""); // 资源名称 if (StringUtils.isNotBlank(resourceInfo.getRsname())) { sql.append(" and v.name like '%" + resourceInfo.getRsname() + "%' "); } // 资源编号 if (StringUtils.isNotBlank(resourceInfo.getStationcode())) { sql.append(" and v.stationcode like '%" + resourceInfo.getStationcode() + "%' "); } // 资源地址 if (StringUtils.isNotBlank(resourceInfo.getAddress())) { sql.append(" and v.address like '%" + resourceInfo.getAddress() + "%'"); } // 专业类型 if (StringUtils.isNotBlank(resourceInfo.getBusinessType())) { String[] types = resourceInfo.getBusinessType().split(","); String type = "'"; for (int i = 0; i < types.length; i++) { type += types[i] + "','"; } type = type.substring(0, type.length() - 2); sql.append(" and v.type in(" + type + ")"); } // 按组织 if (StringUtils.isNotBlank(resourceInfo.getOrgid())) { sql.append(" and pg.ORGID='" + resourceInfo.getOrgid() + "'"); } // 按巡检组 if (StringUtils.isNotBlank(resourceInfo.getPatrolgroupid())) { sql.append(" and pg.ID='" + resourceInfo.getPatrolgroupid() + "'"); } // 按区域 if (StringUtils.isNotBlank(resourceInfo.getRegionid())) { sql.append(" and v.REGIONID= any(select regionid from view_region start with regionid='" + resourceInfo.getRegionid() + "' connect by prior regionid=parentid)"); } // 按用户管辖专业类型 if (MapUtils.isNotEmpty(resourceInfo.getBusinessTypeMap())) { Map<String, Object> map = resourceInfo.getBusinessTypeMap(); Iterator<String> it = map.keySet().iterator(); if (it != null) { String resType = ""; while (it.hasNext()) { resType += "'"; resType += it.next(); resType += "'"; resType += ","; } resType = resType.substring(0, resType.length() - 1); sql.append(" and v.type in(" + resType + ")"); } } return sql; } }