package com.cabletech.business.assess.dao; import java.util.HashMap; import java.util.List; import java.util.Map; import org.apache.commons.lang.StringUtils; import org.springframework.stereotype.Repository; import com.cabletech.business.assess.model.AssessExaminationResult; import com.cabletech.common.base.BaseDao; /** * 月考核汇总Dao * * @author zhaobi * @date 2012-8-8 */ @Repository public class AssessMonthSummaryDao extends BaseDao { /** * 获取月汇总数据 * * @param map * 条件 * @return */ public Map<String, Object> getMonthSummary(Map<String, Object> map) { StringBuffer sb = new StringBuffer( "select r.*,o.orgname,o.REGIONID,o.regionname,t.business_type,fn_getnamebycode(t.business_type,'businesstype') businesstypename "); sb.append(" from MM_ExaminationResults r left join MM_appraise_table t on r.table_id=t.id left join view_org o on r.contractor_id=o.ID where t.table_type='01' and r.state='"+AssessExaminationResult.END_STATE+"' "); if (StringUtils.isNotBlank(map.get("regionid").toString())) { sb.append(" and o.regionid=any(select regionid from view_region start with regionid='" + map.get("regionid").toString() + "' connect by prior regionid=parentid)"); } if (StringUtils.isNotBlank(map.get("month").toString())) { sb.append(" and to_char(r.appraise_month,'yyyy-mm')='" + map.get("month").toString() + "'"); } if (StringUtils.isNotBlank(map.get("orgid").toString())) { sb.append(" and r.contractor_id='" + map.get("orgid").toString() + "'"); } sb.append(" order by o.REGIONID,o.regionname,o.orgname asc"); String sql = sb.toString(); logger.debug("月考核汇总sql:" + sql); List<Map<String, Object>> result = super.jdbcTemplate.queryForList(sql); Map<String,Object> queryDatas = new HashMap<String,Object>(); queryDatas.put("sql", sql); queryDatas.put("result", result); return queryDatas; } /** * 获取月度考核排名 * * @param map * 条件 * @return */ public Map<String, Object> getMonthRank(Map<String, Object> map) { StringBuffer sb = new StringBuffer( "select * from (select r.score,o.REGIONID,o.orgname,o.regionname, row_number() over(partition by regionname order by r.score desc) pm "); sb.append(" from MM_ExaminationResults r left join MM_appraise_table t on r.table_id=t.id left join view_org o on r.contractor_id=o.ID "); sb.append(" where t.table_type='01' and r.state='"+AssessExaminationResult.END_STATE+"' "); if (null!=map.get("businesstype")) { sb.append(" and t.business_type='" + map.get("businesstype").toString() + "'"); } if (StringUtils.isNotBlank(map.get("regionid").toString())) { sb.append(" and o.regionid=any(select regionid from view_region start with regionid='" + map.get("regionid").toString() + "' connect by prior regionid=parentid)"); } if (StringUtils.isNotBlank(map.get("month").toString())) { sb.append(" and to_char(r.appraise_month,'yyyy-mm')='" + map.get("month").toString() + "'"); } sb.append(" group by o.regionname,o.orgname,r.score,o.REGIONID) order by regionid,pm "); String sql = sb.toString(); logger.debug("月考核排名sql:" + sql); List<Map<String, Object>> result = super.jdbcTemplate.queryForList(sql); Map<String,Object> queryDatas = new HashMap<String,Object>(); queryDatas.put("sql", sql); queryDatas.put("result", result); return queryDatas; } }